【发布时间】:2019-09-23 15:58:37
【问题描述】:
我有一个 python 烧瓶项目,它应该是一个用于内部网络的网络应用程序。它位于以 docker-compose 文件开头的 docker 映像中。
有时当我运行它时,烧瓶服务器不会收到来自外界的消息。我认为这一定是 docker-compose 自动创建的 docker 网络的问题。每当出现此问题时,我都必须重新启动盒子,然后将容器重新启动,它会自行修复。
还有其他人看过吗?
当我说它没有看到来自盒子外部的连接时,我的意思是 HTTP 请求永远不会到达烧瓶服务器。我可以尝试从另一台机器转到与烧瓶服务器对应的 URL,而烧瓶服务器什么也看不到。但是,如果我尝试从盒子内部(不是在容器内部,而是在容器正在运行的盒子上)发送 HTTP GET 请求,flask 服务器就会响应。
所以这让我相信 docker-compose 正在创建一个未正确配置的 docker 网络以允许容器侦听外部请求。
这是我的 docker compose 文件:
version: '3.7'
services:
falcon:
image: "company.com/internal/falcon:0.1"
container_name: falcon
env_file:
- ~/.env
ports:
- "80:80"
volumes:
- ${REPOS}/falcon:/app
command: /conda/bin/falcon start
【问题讨论】:
-
尝试使用
network=host只是为了确定问题是否仍然存在 -
您的
app.run()看起来如何? 1)你使用端口80,但是Flask默认是5000,所以使用ports: -"80:5000"。 2) Flask 默认主机是localhost,但要使其在 docker 之外可以访问,您需要有0.0.0.0.* -
@BrunoLubascher 是的,抱歉,我已经解决了这些问题。真的,我认为这与 linux 和 docker-compose 的关系比烧瓶更重要。
标签: python docker flask docker-compose