Docker组合容器在osx土地上不相互交谈

问题描述 投票:1回答:1

我在osx上的docker-compose中设置了一个问题,其中容器无法在自己的docker网络上相互通信,无论是显式设置还是仅在默认配置中。现在我不是码头专家,但是从我所做的所有读数来看,这听起来应该是开箱即用的。

无论如何,请看看我的配置,让我知道我是否遗漏了一些非常愚蠢的东西。 (我希望我能继续完成下一个任务。)

version: "3"

services:
  ui-app:
    build: ./src/ui    
    env_file:
      - "./envs/ui-app.env"
    ports:
      - "3400:3400"
    networks:
      - local_dev_network
    links:
      - api-gateway

  api-gateway:
    build: ./src/api-gateway
    depends_on:
      - redis
    env_file:
      - "./envs/api-gateway.env"
    ports:
      - "5050:5050"
    networks:
      - local_dev_network
    links:
      - redis

  redis:
    image: redis:alpine
    ports:
      - "6379:6379"
    networks:
      - local_dev_network

  debug:
    build: ./src/debug
    ports:
      - "5001:5001"
    depends_on:
      - ui-app
      - redis
    networks:
      - local_dev_network
    links:
      - redis

networks:
  local_dev_network:    
macos docker docker-compose
1个回答
1
投票

我看到你正在使用链接和用户网桥。

不推荐使用链接来连接容器以使用网络。 https://docs.docker.com/compose/compose-file/#links

所以,

  1. 我建议你删除links,因为你已经创建了local_dev_network
  2. 虽然默认network_modebridge,但我也会指定它,因为network_mode: host与链接不兼容。如果您删除链接,则不需要这样做,但这是一种很好的做法。
  3. 如果您不想移动链接,请注意您正在定义网络,但不是全部连接,尽管有桥接定义。这就是为什么你没有在links:部分定义几个条目。

确切地说,您有两种选择:

  • 链接选项:删除networks:部分并在链接中指定所有容器。 A与B,C,D相连; B链接到A,C,D ......而不是A链接B,B链接C.
  • 网络选项(推荐)::在你的作品中删除links:部分。
version: "3"

    services:
      ui-app:
        build: ./src/ui    
        env_file:
          - "./envs/ui-app.env"
        ports:
          - "3400:3400"
        networks:
          - local_dev_network

      api-gateway:
        build: ./src/api-gateway
        depends_on:
          - redis
        env_file:
          - "./envs/api-gateway.env"
        ports:
          - "5050:5050"
        networks:
          - local_dev_network

      redis:
        image: redis:alpine
        ports:
          - "6379:6379"
        networks:
          - local_dev_network

      debug:
        build: ./src/debug
        ports:
          - "5001:5001"
        depends_on:
          - ui-app
          - redis
        networks:
          - local_dev_network

    networks:
      local_dev_network:    

如果这对您没有任何作用,也许可以尝试使用network_mode: host,当然也可以删除links部分

© www.soinside.com 2019 - 2024. All rights reserved.