docker compose连接到其他容器失败

docker compose连接到其他容器失败,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,我有两个docker映像,一个rest服务器(flaskapp)和另一个web服务器(web)。我正在尝试使用docker compose运行它们 但是,web容器似乎无法联系rest容器 以下是我的docker compose.yml文件: version: '3' services: flaskapp: build: ./rest_server restart: always networks: - docker_network expose:

我有两个docker映像,一个rest服务器(
flaskapp
)和另一个web服务器(
web
)。我正在尝试使用
docker compose
运行它们

但是,web容器似乎无法联系rest容器

以下是我的
docker compose.yml
文件:

version: '3'
services:
  flaskapp:
    build: ./rest_server
    restart: always
    networks:
      - docker_network
    expose:
      - 5001

  web:
    build: ./web
    restart: always
    ports:
      - 3002:3000
    depends_on:
      - flaskapp
    networks:
      - docker_network
    healthcheck:
      test: ["CMD", "curl", "-f", "http://flaskapp:5001/todos"]
networks:
  docker_network:
    driver: bridge
我的web应用程序引用以下URL:

但是,如果我使用
docker exec-it/bin/bash
登录到docker容器并运行以下命令,我将得到预期的json响应

卷曲

我也可以公开我的rest服务器端口,然后在web服务器中将rest服务器地址更改为localhost,这将解决问题,但这不是我想要的

我不想向主机公开我的rest服务器

只需添加:

expose:
 - "5001"
到烧瓶部分

这不会将端口5001公开给主机,这只是将端口5001公开给同一网络中的所有容器,这是您想要的

您需要:

  • 为容器定义公共网络
  • 暴露
    flaskapp
    容器的端口
    5001
  • 事实上,根据EXPOSE指令,“在不将端口发布到主机的情况下公开端口-它们只能由链接的服务访问”。因此,它允许“公开”端口的容器与同一网络中的其他容器之间进行通信

    试试这样:

    version: '3'
    services:
        flaskapp:
            build: ./rest_server
            expose:
                - 5001
            networks:
                - docker_network
    
        web:
            build: ./web
            restart: always
            ports:
                - 3002:3000
            networks:
                - docker_network
            depends_on:
                - flaskapp
    
    networks:
      docker_network:
        driver: bridge
    

    同样的结果,我可以从web容器中访问rest服务器。但是,当rest服务器发送请求时,它会失败。这很奇怪。听起来好像和你的网络容器有关。容器环境设置正确。我想下一步是看看web容器是否接受CORS请求。因为它们基本上居住在两个地方。我仍然得到相同的结果。我定义了网络<代码>网络:docker\u网络:driver:bridge不,我没有任何错误消息,状态为Healthy您可以解释一下您所说的“web容器无法联系rest容器”的意思吗。您有什么错误?如果您使用5433:5432,它将不会暴露5433端口,并且您将得到拒绝连接。一旦您将其更改为“5433:5432”,它就会工作。与官方博士后测试:13.2图像(以及13)。