Docker组成的容器在osx领域中彼此不对话

时间:2018-08-30 07:43:35

标签: macos docker docker-compose

我在osx上的docker-compose中进行设置时遇到了问题,即容器无法在自己的docker网络上进行显式设置或仅在默认配置中相互通信。现在我不是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:    

1 个答案:

答案 0 :(得分: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部分