docker-compose link с контейнером, работающим в сети хоста

У меня есть контейнер postgres, работающий как host network_mode, и контейнер Nextcloud, работающий в сети по умолчанию (мостовой) с портом 8080: 80 .

Как связать контейнеры, чтобы Nextcloud мог получить доступ к postgres? Я' Я пробовал добавить это в мой docker-compose.yml , но похоже, что он не работает.

services:
    nextcloud:
        external_links:
         - "postgres:postgres"

Команда, которую я использую для запуска postgres:

docker run --name postgres --net host --restart always postgres

Когда я это делаю, появляется эта ошибка

Ошибка при попытке создать пользователя с правами администратора: не удалось подключиться к базе данных: возникла исключительная ситуация в драйвере: SQLSTATE [08006] [7] не удалось преобразовать имя хоста «postgres» в адрес: имя или служба неизвестны

Альтернативный вариант: Как я могу определить порт, который должен прослушивать nextcloud, чтобы я мог использовать его в хост-сети?

0
задан 14 June 2018 в 05:57
1 ответ

Не рекомендуется запускать контейнеры с - net host . Вы можете просто включить postgres в свой docker-compose без особых усилий:

services:
  postgres:
    image: postgres
    restart: always
    volumes:
      - db:/var/lib/postgresql/data
  app:
    image: nextcloud
    ports:
      - 8080:80
    links:
      - db
    volumes:
      - nextcloud:/var/www/html
    restart: always

Сеть будет создана автоматически, так что теперь вы можете подключиться к базе данных на postgres .

0
ответ дан 5 December 2019 в 05:54

Теги

Похожие вопросы