Docker-compose доступ к локальной сети из контейнера - PullRequest
0 голосов
/ 19 марта 2019

Предположим, у меня есть 2 службы в моем docker-compose:

version: "2.4"

services:
  postgres:
    build: 
      context: .
      dockerfile: ./docker_config/dockerfiles/postgres.Dockerfile
    volumes:
      - ./docker_volumes/db/postgresql:/var/lib/postgresql    

  initializer:
    build:
      context: .
      dockerfile: ./docker_config/dockerfiles/initializer.Dockerfile
    depends_on: postgres

initializer осуществляет доступ postgres с использованием "postgres" имени хоста в сети, созданной для этого файла docker-compose, но теперь я хочу, чтобы initializer также взаимодействовал с некоторым хостом в локальной сети, к которому initializer не может получить доступ сейчас (время ожидания всех запросов истекло).

Я пытался использовать network-mode: bridge на обоих контейнерах и только на initializer, и доступ к локальной сети работал, но initializer не мог получить доступ к postgres в этих случаях.

Как сделать доступным и контейнер LAN, и контейнер postgres из контейнера initializer?

1 Ответ

1 голос
/ 19 марта 2019

Решением было добавить еще одну сеть к initializer сервису, а не переопределять настройку по умолчанию. Код для наглядности:

version: "2.4"

networks:
  lan_access:
    driver: bridge

services:
  postgres:
    build: 
      context: .
      dockerfile: ./docker_config/dockerfiles/postgres.Dockerfile
    volumes:
      - ./docker_volumes/db/postgresql:/var/lib/postgresql    

  initializer:
    build:
      context: .
      dockerfile: ./docker_config/dockerfiles/initializer.Dockerfile
    depends_on: postgres
    networks:
      - lan_access
      - default
...