Docker未使用gunicorn映射端口

2024-06-02 04:47:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我在docker集装箱内运行gunicorn。我知道这是可行的,因为在docker容器中放入sshing并卷曲localhost:8000/things会给我想要的响应,但是,尽管docker告诉我端口已映射,我无法在我的主机上实现这一点。有什么好处

我跑

docker run -d -p 80:8000 myapp:version1.1 /bin/bash -c 'gunicorn things:app'

docker ps给了我

CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS              PORTS                            NAMES
614df1f2708e        myapp:version1.1  "/bin/bash -c 'gunico"   6 minutes ago       Up 6 minutes        5000/tcp, 0.0.0.0:80->8000/tcp   evil_stallman

在我的主机上,冰壶locahost/东西让我

curl: (52) Empty reply from server

然而,当我docker exec -t -i 614df1f2708e /bin/bash然后curl localhost:8000/things时,我成功地得到了正确的响应

为什么docker没有正确映射我的端口8000


Tags: 端口dockerbashlocalhostbin集装箱curlmyapp
1条回答
网友
1楼 · 发布于 2024-06-02 04:47:40

发布端口时,Docker会将请求转发到容器中,但容器需要侦听它们。容器具有来自Docker网络的IP地址,您的应用程序需要监听该地址

Check your gunicorn bind setting-如果它只在127.0.0.1:8000上侦听,那么它不会绑定到容器的IP地址,也不会从外部获取请求0.0.0.0:8000是安全的,因为它将绑定到所有地址

相关问题 更多 >