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

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,

Другие вопросы по тегам