Контейнеры Docker-compose не разговаривают друг с другом в земле OSX - PullRequest
0 голосов
/ 30 августа 2018

У меня возникла проблема с моей настройкой в ​​docker-compose на osx, когда контейнеры не могут общаться друг с другом в собственной докерной сети, заданной явно или только в конфигурации по умолчанию. Сейчас я не эксперт по докеру, но из всех прочитанных мною чтений вроде бы должно получиться из коробки.

В любом случае, пожалуйста, посмотрите на мой конфиг и дайте мне знать, если я пропустил что-то действительно глупое. (На что я так надеюсь, так как мне нужно перейти к следующему заданию.)

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 голосов
/ 30 августа 2018

Я вижу, что вы используете ссылки , а также пользовательские сетевые мосты .

Ссылки устаревшие для подключения контейнеров для использования сетей. https://docs.docker.com/compose/compose-file/#links

Итак,

  1. Позвольте мне порекомендовать вам удалить links, потому что вы уже создали local_dev_network.
  2. Хотя по умолчанию network_mode равно bridge, я бы также указал его, поскольку network_mode: host не совместим со ссылками. Это не нужно в вашем случае, если вы удаляете ссылки, но это хорошая практика.
  3. Если вы не хотите перемещать ссылки, обратите внимание, что вы определяете сеть, но не соединяете все со всеми, несмотря на определение моста. Вот почему вы не определили несколько записей в разделе links:.

Определенно, у вас есть два варианта:

  • опция ссылок : удалить раздел networks: и указать в ссылках все контейнеры. Связанный с 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 section

...