Stačí využít uživatelsky definované mostové sítě. Nejprve využijte své znalosti přečtením krátkého vysvětlení různých typů sítí v Dockeru:https://docs.docker.com/network/bridge/
Za druhé, definujte svou vlastní síť
docker network create foo
Dále spusťte kontejnery připojené do této sítě:
docker run --rm --env-file /path/to/variables -d --network foo django_app:test
docker run --rm -d ... --network foo postgres:alpine ...
Upozornění v obou příkazech --network foo
. Také nepotřebujete k odhalení portů v tomto případě - uvnitř uživatelsky definovaných sítí se to děje automaticky:
Kontejnery připojené ke stejné uživatelsky definované přemosťovací síti automaticky vystaví všechny porty sobě navzájem a žádné porty vnějšímu světu. To umožňuje kontejnerizovaným aplikacím snadno mezi sebou komunikovat, aniž by se náhodně otevřel přístup do vnějšího světa.
Za třetí, dejte svým kontejnerům čitelné názvy hostitelů pomocí --name bar
docker run ... --network foo --name my-django django_app:test ...
docker run ... --network foo --name my-postgres postgres:alpine ...
A nakonec opravte připojovací řetězec - změňte z localhost
na název kontejneru, například my-postgres
:
...
POSTGRES_HOST=my-postgres
...