遵循关于https://docs.docker.com/get-started/part2/的教程。
我用docker run -p 4000:80 friendlyhello
启动我的码头集装箱
并查看
* Serving Flask app "app" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://0.0.0.0:8088/ (Press CTRL+C to quit)
但是,从预期的本地主机路径4000无法访问它。
$ curl http://localhost:4000/
curl: (7) Failed to connect to localhost port 4000: Connection refused
$ curl http://127.0.0.1:4000/
curl: (7) Failed to connect to 127.0.0.1 port 4000: Connection refused
好吧,也许不是在我本地的主人身上。获取使用docker inspect --format '{{ .NetworkSettings.IPAddress }}' 7e5bace5f69c
检索IP的容器ID
它返回172.17.0.2
,但没有运气!curl
继续给出相同的响应。我可以确认4000
上有什么东西在运行..。
lsof -i :4000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
com.docke 94812 travis 18u IPv6 0x7516cbae76f408b5 0t0 TCP *:terabase (LISTEN)
我要把我的头发拔出来。我已经阅读了故障排除指南,可以确认*没有在代理上*不要使用自定义dns *我有问题连接到码头,而不是对接连接到我的pip服务器。
使用app.py运行python app.py
服务器启动,我就可以点击它了。我遗漏了什么?
发布于 2019-08-29 00:45:18
您是否意外地将port=8088放在app.py文件的底部?当您运行此程序时,输出的最后一行是说您的python应用程序是在端口8088而不是80上公开的。
要确认您可以运行,可以修改app.py文件并重新构建映像,或者可以运行:docker run -p 4000:8088 friendlyhello
,它将把您的本地端口4000映射到容器中的8088。
发布于 2019-08-29 00:44:55
尝试使用以下方法运行它:
docker run -p 4000:8088 friendlyhello
从日志中可以看到,您的应用程序是从端口8088
启动的,但是您可以将4000
连接到80
,而在80
上,实际上没有任何内容在监听。
https://stackoverflow.com/questions/57701570
复制相似问题