Найти в Дзене
me-ads.ru

Как подключится к контейнеру базе данных из контейнера приложения в Docker локально.

Работаем из под Windows 10, имеем 2 контейнера, 1-й Posgres, второй наше приложение, нужна локальная разработка... Поднимаем локальную базу данных в контейнере. Создаем том и называем его например vol_1, для того чтобы после уничтожения контейнера данные бд не удалились. docker volume create vol_1 Далее поднимаем контейнер с базой, называем ее например local_pg, устанавливаем пароль, запускаем в фоне, открываем порт 5432 и монтируем каталог даты у Postgres с нашим томом vol_1. docker run --name local_pg -e POSTGRES_PASSWORD=123 -d -p 5432:5432 -v vol_1:/var/lib/postgresql/data postgres Теперь нам нужно поднять наше приложение в другом контейнере и подключится к базе данных, все дело в том что контейнер изолирует среду и у тебя уже не получится просто так подключится к базе данных по localhost к другому контейнеру. С сетью я еще не разобрался поэтому я узнаю IP контейнера базы данных и передаю при запуске этот IP как переменную окружающей среды. docker container inspect --format='{{
Ребят пишу для себя, потому что информации много а запомнить все не могу...
Ребят пишу для себя, потому что информации много а запомнить все не могу...

Работаем из под Windows 10, имеем 2 контейнера, 1-й Posgres, второй наше приложение, нужна локальная разработка...

Поднимаем локальную базу данных в контейнере.

Создаем том и называем его например vol_1, для того чтобы после уничтожения контейнера данные бд не удалились.

docker volume create vol_1

Далее поднимаем контейнер с базой, называем ее например local_pg, устанавливаем пароль, запускаем в фоне, открываем порт 5432 и монтируем каталог даты у Postgres с нашим томом vol_1.

docker run --name local_pg -e POSTGRES_PASSWORD=123 -d -p 5432:5432 -v vol_1:/var/lib/postgresql/data postgres

Теперь нам нужно поднять наше приложение в другом контейнере и подключится к базе данных, все дело в том что контейнер изолирует среду и у тебя уже не получится просто так подключится к базе данных по localhost к другому контейнеру. С сетью я еще не разобрался поэтому я узнаю IP контейнера базы данных и передаю при запуске этот IP как переменную окружающей среды.

docker container inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' local_pg

Достаем командой inspect IP адрес контейнера в нашем случае он называется local_pg...

docker run --name app -p 80:80 -e DB_HOST="172.17.0.2" -e DB_PORT="5432" -d app

Запускаем наше приложение и устанавливаем переменные внутрь контейнера... Соответственно в приложении достаем переменные и соединяемся с базой...