Ссылка 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
,