我使用 docker 容器构建了一个 Flask 应用程序,它在端口 5000 上运行良好。但是为了公开不同的端口,我必须将端口放入 app.py 中
if __name__ == '__main__':
app.run(debug=True,host='0.0.0.0',port=6000)
一旦我启动了 docker 容器,它就会很好地工作。
然而,当我做
if __name__ == '__main__':
app.run(debug=True,host='0.0.0.0')
并在 Dockerfile 中说
EXPOSE 6000
并在 docker 容器上运行 Flask 应用程序,它不在端口 6000 上运行,而是在端口 5000 上运行。为什么会这样?在 dockerfile 中公开端口号对 Flask 应用程序来说还不够吗?
请您参考如下方法:
您的 Flask 应用程序不知道 dockerfile 中放置了哪个端口。
您可以将应用程序保留在默认端口,并使用 -p 选项告诉 docker 在所需端口上公开它:
docker run -i -t -p 6080:5000 ...
见 https://docs.docker.com/network/links/#connect-using-network-port-mapping更多细节。


