У меня есть контейнер 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
.