Python docker网络问题

Python docker网络问题,python,docker,flask,docker-compose,Python,Docker,Flask,Docker Compose,我有一个python flask项目,它应该是一个用于内部网络的web应用程序。它位于docker映像中,该映像以docker compose文件开始 有时,当我运行它时,flask服务器无法从外部世界获取消息。我想这一定是docker compose自动创建的docker网络的问题。每当这个问题发生时,我必须重新启动盒子,然后把容器带回来,它会自行修复 还有谁见过这个吗 当我说它看不到盒子外的连接时,我的意思是HTTP请求永远不会到达flask服务器。我可以尝试从另一台机器转到对应于flask

我有一个python flask项目,它应该是一个用于内部网络的web应用程序。它位于docker映像中,该映像以docker compose文件开始

有时,当我运行它时,flask服务器无法从外部世界获取消息。我想这一定是docker compose自动创建的docker网络的问题。每当这个问题发生时,我必须重新启动盒子,然后把容器带回来,它会自行修复

还有谁见过这个吗

当我说它看不到盒子外的连接时,我的意思是HTTP请求永远不会到达flask服务器。我可以尝试从另一台机器转到对应于flask服务器的URL,但flask服务器什么也看不到。但是,如果我尝试从盒子内部(不是在容器内部,而是在容器运行的盒子上)发送HTTP GET请求,flask服务器会做出响应

因此,这让我相信docker compose正在创建一个docker网络,该网络没有正确配置以允许容器侦听外部请求

这是我的docker撰写文件:

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

这还没有得到广泛的测试,但似乎已经解决了问题:

version: '3.7'
services:
  falcon:
    image: "company.com/internal/falcon:0.1"
    container_name: falcon
    network_mode: bridge  # also tried host, I think bridge is right.
另一种解决方案似乎忽略了上面的网络模式,并将其放在下面:

networks:
    default:
        external:
            name: prod_default

我仍然不知道为什么会发生这种情况,但这两种解决方案似乎都能解决问题。

尝试使用
network=host
来解决问题,如果问题仍然存在,您的
app.run()看起来怎么样?1) 您正在使用端口
80
,但默认值为
5000
,因此请使用
端口:-“80:5000”
。2) Flask默认主机是
localhost
,但要使其在docker外部可访问,您需要使用
0.0.0
*@BrunoLubascher是的,对不起,我已经解决了这些问题。确实,我认为这与linux和docker compose的关系比它与flask的关系更大。