无法通过打开的端口访问 Docker 应用程序

标签 docker networking flask

我在容器内有一个 flask 应用程序。我运行这个容器

docker run -p 5000:5000 pyprojects_web

它回复
 * Serving Flask app "debateit.py"
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

如果我跑
docker container ls

我得到
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
2221298e6e2c        pyprojects_web      "flask run"         12 minutes ago      Up 12 minutes       0.0.0.0:5000->5000/tcp   elated_joliot

如果我访问 http://127.0.0.1:5000我得到:
This site can’t be reached
The web page at http://127.0.0.1:5000/ might be temporarily down or it may have moved permanently to a new web address.
ERR_SOCKET_NOT_CONNECTED

http://localhost:5000给出了类似的响应。

通常的建议是使用 0.0.0.0 监听容器内的所有连接 - 但我已经这样做了。这是我的应用程序:
from app import app


if __name__ == "__main__":
    app.run(host="0.0.0.0")

如果我从容器内部 curl ,它可以完美运行:
docker exec -it 2221298e6e2c curl http://localhost:5000

带有很长的 HTML 响应,我的服务器日志得到:
127.0.0.1 - - [04/Jun/2018 01:00:16] "GET / HTTP/1.1" 200 -

鉴于这些结果,并考虑到我有一个“0.0.0.0”主机,还有什么可以尝试的?

谢谢。

最佳答案

因此,根据评论,很明显您实际上并没有在 0.0.0.0 上运行这可能是(注意容器的 command),因为您正在运行更新版本的 flask ,我认为您必须将一些参数传递给 flask run .

试试 flask run --host=0.0.0.0作为您容器中的命令,我认为这可能会解决您的期望:)

更多信息请访问 Flask Docs .

关于无法通过打开的端口访问 Docker 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50672322/

相关文章:

docker - 如何在Docker容器中使用Ruby编写文件?

c# - 如何通过 docker 使用启动配置文件运行 .net 核心应用程序

docker - 在本地网络中的主机上部署Docker容器

google-app-engine - 将 Google Cloud KMS 与 Flask、gunicorn 和 gevent worker 一起使用时出错 : "google.api_core.exceptions.ServiceUnavailable: 503 Deadline Exceeded"

redirect - HTTP/2 Nginx强制将HTTP重定向到HTTPS破坏了预期的行为

json - kubernetes 无法在全新安装的 CoreOS 上连接

android - 如何使用 AutoCompleteTextView 并使用来自 Web API 的数据填充它?

linux - QUdpSocket 读取 - 使用 tcpdump 观察到偶尔丢失数据报

json - PYODBC 截断 SQL Server FOR JSON 查询的响应

python - 使用蓝图在 Flask 上渲染模板时图像不显示