Maak gewoon gebruik van door de gebruiker gedefinieerde bridge-netwerken. Maak eerst gebruik van uw kennis door een korte uitleg te lezen over verschillende soorten netwerken in Docker:https://docs.docker.com/network/bridge/
Ten tweede, definieer uw eigen netwerk
docker network create foo
Voer vervolgens uw containers uit verbonden naar dit netwerk:
docker run --rm --env-file /path/to/variables -d --network foo django_app:test
docker run --rm -d ... --network foo postgres:alpine ...
Let op in beide commando's --network foo
. Ook heb je niet nodig om poorten in dit geval vrij te geven - binnen door de gebruiker gedefinieerde netwerken wordt dit automatisch gedaan:
Containers die zijn aangesloten op hetzelfde door de gebruiker gedefinieerde bridge-netwerk, stellen automatisch alle poorten aan elkaar bloot en geen poorten aan de buitenwereld. Hierdoor kunnen gecontaineriseerde applicaties gemakkelijk met elkaar communiceren, zonder per ongeluk toegang tot de buitenwereld te openen.
Ten derde, geef uw containers door mensen leesbare hostnamen met --name bar
docker run ... --network foo --name my-django django_app:test ...
docker run ... --network foo --name my-postgres postgres:alpine ...
En tot slot de verbindingsreeks repareren - verander van localhost
naar containernaam, zoals my-postgres
:
...
POSTGRES_HOST=my-postgres
...