Назад | Перейти на главную страницу

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

У меня есть контейнер 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, чтобы я мог использовать его в хост-сети?

Не рекомендуется запускать контейнеры с --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.