docker不使用gunicorn映射端口
我在docker集装箱内运行gunicorn。 我知道这是可行的,因为sshing到它和curl本地主机:8000 /docker容器中的东西给我我想要的反应,但是,我无法达到我的主机,尽pipedocker告诉我的端口已映射。 是什么赋予了?
我跑了
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?
当你发布一个端口时,Docker会将请求转发到容器中,但是容器需要监听它们。 该容器有一个来自Dockernetworking的IP地址,并且您的应用程序需要监听该地址。
检查你的gunicorn绑定设置 – 如果它只在127.0.0.1:8000
监听,那么它不绑定到容器的IP地址,也不会从外部获取请求。 0.0.0.0:8000
是安全的,因为它会绑定到所有地址。