Подключить докер-контейнер из другого контейнера и с локального хоста - PullRequest
0 голосов
/ 23 мая 2019

У меня есть простое веб-приложение, которое я настроил для запуска в контейнерах Docker. Конфигурация выглядит так

version: '3'
services:
  service-1:
    build: service-1
    restart: unless-stopped
    ports:
      - "8080:8080"
    networks:
      - uni

  service-1-postgres:
    restart: unless-stopped
    ports:
      - "5432:5432"
    image: "postgres:11.3"
    environment:
      POSTGRES_PASSWORD: root
    networks:
      - uni

networks:
  uni:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 192.168.0.1/24

Я подключаюсь к своему контейнеру postgres внутри другого контейнера, используя 192.168.0.1 (сетевая подсеть). Но теперь я хочу иметь возможность запускать свой сервис из IDE для более быстрой разработки и создания базы данных в контейнере. Но сейчас соединение с БД не получается. Как я могу настроить свой docker-compose, чтобы иметь возможность подключаться к моему контейнеру БД внутри сети и за ее пределами (из БД), используя тот же хост.

1 Ответ

0 голосов
/ 24 мая 2019

Важно иметь какую-то реальную конфигурацию для этого.Клиентская библиотека C PostgreSQL поддерживает стандартную переменную окружения PGHOST, которая является хорошим вариантом.

В вашей локальной среде разработки среды IDE вы можете установить PGHOST=localhost или оставить ее неустановленной.Он будет подключаться к локальному (с точки зрения хоста) порту 5432, а порт 5432 на хосте - это то, что вы указали опубликованный порт для вашего контейнера PostgreSQL.

И наоборот, когда вы запускаете этотв Docker вы можете установить PGHOST для имени другого контейнера, при условии, что оба контейнера находятся в одной сети не по умолчанию.Docker Compose автоматически создаст для вас сеть не по умолчанию, и вам не понадобится указанная вручную конфигурация сети.Контейнеры доступны с использованием имени их сервисного блока в качестве имени хоста.

version: '3'
services:
  service-1:
    build: service-1
    restart: unless-stopped
    ports:
      - "8080:8080"
    environment:
      PGHOST: service-1-postgres

  service-1-postgres:
    # as above, less the networks: block
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...