Проброска порта 5432 в docker

Опыт работы с docker пока еще мал. На порте 5432 локальной машины бд, как прокинуть этот порт внутрь контейнера например на порт 1234, чтобы я работая с приложением через docker мог обратиться к локальной бд? Заранее благодарен!


Ответы (2 шт):

Автор решения: DmitryD

Запуская контейнер можно задать маппинг портов [внешний_порт]:[порт_внутри_контейнера] через ключ -p 1234:5432

Например docker run -d -p 1234:5432 postgres

UPD: В запущенный контейнер нельзя вносить изменения, поэтому придется создать новый контейнер, взяв за основу исходный.

  1. Остановить контейнер docker stop [имя_контейнера]
  2. Закоммитить контейнер docker commit [имя_контейнера] [новое_имя_контейнера]
  3. Запустить новый контейнер docker run -p 1234:5432 -p 5432:5432 [новое_имя_контейнера]
→ Ссылка
Автор решения: Alexander Pavlov

Если тебе из контейнера надо обращаться к базе, которая запущена не в докере, а на хостовой ОС, то на Windows/MacOS используй специальное имя host.docker.internal, которое докер разрезолвит в имя компьютера. Например, host.docker.internal:5432

На Linux, кажется, просто по настоящему имени хоста можно обратиться.

→ Ссылка