Самое простое и элегантное решение - использовать докер с именем bridge network.Вы можете создать собственную мостовую сеть (по умолчанию это мост), например:
docker network create my-network
Каждый контейнер, развернутый в этой сети, может взаимодействовать друг с другом, используя имя контейнера.
$ docker run --network=my-network --name my-app ...
$ docker run --network=my-network --name my-database...
В приведенном выше примере вы можете подключиться к вашей базе данных из приложения, используя my-database:port
.Если порт контейнера открыт в Dockerfile, вам не нужно отображать его на вашем хосте, и вы можете хранить все ваши внутренние коммуникации внутри вашей настраиваемой сети Docker Bridge.
В большинстве случаев приложению сопоставляется его порт (пример: -p 80:80
), поэтому localhost:80
сопоставляется с container:80
, и вы можете получить доступ к приложению с локального хоста.Если приложению необходимо обмениваться данными с БД, вам не нужно указывать порт БД, и вам не нужно отображать его на localhost, как описано выше.Просто сохраняйте связь между приложением и внутренней базой данных в своей пользовательской мостовой сети.