Как мне соединить контейнеры, используя имя контейнера с docker-compose? - PullRequest
0 голосов
/ 12 апреля 2019

Я пытаюсь понять, как я получаю доступ к контейнерам между собой через их имя контейнера. В частности, при использовании контейнера pgadmin и подключении к контейнеру postgresql через dns.

В docker-compose V3 я не могу связать их, и networks:, кажется, также недоступен.

Основная причина, по которой это необходимо, заключается в том, что когда контейнеры раскручиваются, у них нет статического IP-адреса, поэтому в pgadmin я не могу каждый раз подключаться к базе данных postgresql, используя один и тот же IP-адрес, поэтому будет работать имя DNS лучше (т.е. имя контейнера).

Можем ли мы сделать это с помощью docker-compose или хотя бы установить статический IP-адрес для конкретного контейнера?

Я попытался создать пользовательскую сеть:

networks:
  backed:

, а затем использовать его в сервисе:

app:
  networks:
    - backend

Это приводит к ошибке docker-compose, касающейся недопустимого параметра «сети» в приложении.

докер-compose.yml

version: "0.1"

services:
  devapi:
    container_name: devapi
    restart: always
    build: .
    ports:
      - "3000:3000"

  api-postgres-pgadmin:
    container_name: api-postgres-pgadmin
    image: dpage/pgadmin4:latest
    ports:
      - "5050:80"
    environment:
      - PGADMIN_DEFAULT_EMAIL=stuff@stuff.com
      - PGADMIN_DEFAULT_PASSWORD=12345

  api-postgres:
    container_name: api-postgres
    image: postgres:10
    volumes:
      - ./data:/data/db
    ports:
      - "15432:5432"
    environment:
      - POSTGRES_PASSWORD=12345

Ответы [ 2 ]

2 голосов
/ 12 апреля 2019

На самом деле я обнаружил одну непосредственную проблему:

version: "0.1"

Почему вы это делаете?Текущая версия формата композитного файла 3.x.Например:

version: "3"

См., Например, ссылку Compose file version 3 .

Версия определяет, какая функция доступна.Вполне возможно, что установив version: "0.1", вы явно отключите поддержку параметра networks.Вы заметите, что ссылка показывает примеры использования атрибута networks.

В качестве отступления, если нет особой причины, по которой вы его указали, я бы отказался от использования container_name в вашем файле compose, поскольку это делает невозможным запуск нескольких экземпляров одного и того же файла compose на вашем хосте.

0 голосов
/ 12 апреля 2019

networks доступны в docker-compose версии 3, но вы используете version:"0.1" в своем файле docker-compose.

Измените version: "0.1" на version: "3" в docker-compose.yml.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...