访问运行在Docker容器中的Flask应用

0 投票
2 回答
45 浏览
提问于 2025-04-13 16:03

我有一个Flask应用程序,当我在本地运行 python app.py 时没有任何错误。它显示 Running on http://127.0.0.1:5000,如果我直接访问 http://127.0.0.1:5000,一切都正常工作。app.py 的最后一行是 app.run(debug=True)

现在我想通过Docker来运行这个应用。在我的Dockerfile中,有一行是 EXPOSE 8501

然后我用 docker build -t testimage . 来构建镜像。

最后我执行 docker run -it --expose=8501 -p 8501:8501 testimage,结果它又显示 Running on http://127.0.0.1:5000

我的问题是:我在浏览器中输入什么才能访问运行在Docker容器中的应用?

2 个回答

0

假设这是你的 Flask 服务器代码

@app.route("/")
def home():
    response=f"Flask Server > Hello World : Flask in Docker. Current Time:{time.strftime('%B %d, %Y %I:%M:%S %p')}"
    log_file(response)
    return response

if __name__ == "__main__":
    app.run(host="0.0.0.0",debug=True,port=5000)

所以 Flask 应用程序在 5000 端口运行。现在这是 Docker 文件

#run as main.py
CMD ["python","flask_server/app.py"]

现在假设你运行 docker run -it -p 5002:5000 image_name,这条命令是把你电脑上的 5002 端口映射到 Docker 的 5000 端口。这样在浏览器里,你可以打开 http://127.0.0.1:5002/ 来访问它。想了解更多信息,可以查看我的 CICD 仓库

0

你现在把8501端口暴露出来了,但你的flask应用还是在5000端口上运行。你应该要么在暴露的端口上启动应用(可以通过在app.run里加port参数来实现),要么在运行docker的时候暴露一个和应用运行的端口一致的其他端口。

撰写回答