我正在 Docker 容器内运行 Flask 应用程序。我想访问容器端口8000
* 运行于 http://127.0.0.1:8000/
来 self 的主机。
我正在通过运行 docker 容器
docker run -p 127.0.0.1:8080:8000 --rm $(IMAGE_NAME) /Stocks/startserver.sh
当我执行docker ps
时
我看到以下文字
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
85168e4c963e stocks "/Stocks/startserver…" 12 seconds ago Up 11 seconds 127.0.0.1:8080->8000/tcp beautiful_bartik
当我在本地计算机上打开 localhost:8080 时,我什么也看不到。 根据我的理解,端口是开放的,知道为什么我无法从主机连接到它吗? 关于如何调试解决方案的任何提示?
最佳答案
在 http://127.0.0.1:8000/上运行
如果这是 Flask 服务器的控制台输出,那么听起来您在容器内错误地启动了它。看起来 Flask 正在容器内的 127.0.0.1
(localhost) 上运行。它需要运行在容器的外部接口(interface)上!
通过启动来实现这一点:
flask run -h 0.0.0.0
或者,如果在应用程序内使用(过时的)方法 app.run
,请向其传递 host
参数:
if __name__ == '__main__':
app.run(host='0.0.0.0',
# Any other launch args you have
)
0.0.0.0
是特殊地址,表示“所有接口(interface)”。
我还会采纳 @jdickel 的建议,并从运行命令中省略 127.0.0.1
。
关于docker - 从我的本地计算机连接到 docker localhost 端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65246551/