Я использую контейнер docker-compose для postgresql. База данных postgresql в контейнере работает на стандартном порту 5432, и я публикую этот порт на порт 5444 на хосте (поскольку порт хоста по умолчанию используется postgresql).
Я использую одну и ту же конфигурацию на хосте и в контейнере (файл .env, который предоставляет настройки конфигурации для команд cli и приложения в целом). К сожалению, какой бы порт я ни выбрал, одна система потеряет доступ. Например, я не могу запустить:
[k@host]$ pgsql -p 5444 # Connects
в хосте и все еще есть работа внутри контейнера:
[k@db-container]$ pgsql -p 5444 # Errors in container
Сервер postgresql контейнера работает на 5432:
[k@db-container]$ pgsql -p 5432 # Connects successfully in container
и порты публикуются через docker-compose.yml через:
- порты:
- "5444: 5432"
Так что в настоящее время я не знаю, как настроить один и тот же порт везде просто через docker-compose.yml! Команда expose
выставляет порт, но не позволяет переназначить, ports
пересылает контейнер host <->, но не переназначает внутренний порт. Я думал о переназначении порта по умолчанию для postgresql в конфигурации контейнера postgresql, но полная перенастройка postgresql кажется нетривиальной задачей при помощи docker-compose для каждого docker-compose up
.
Как я могу переназначить порты внутри контейнера, чтобы я мог использовать порт 5444 везде, в хосте и контейнере?