Bare gør brug af brugerdefinerede bridge-netværk. Udnyt først din viden ved at læse en kort forklaring af forskellige typer netværk i Docker:https://docs.docker.com/network/bridge/
For det andet skal du definere dit eget netværk
docker network create foo
Kør derefter dine containere forbundne til dette netværk:
docker run --rm --env-file /path/to/variables -d --network foo django_app:test
docker run --rm -d ... --network foo postgres:alpine ...
Bemærk i begge kommandoer --network foo
. Du behøver heller ikke at afsløre porte i dette tilfælde - inde i brugerdefinerede netværk sker det automatisk:
Containere, der er forbundet til det samme brugerdefinerede bridge-netværk, udsætter automatisk alle porte for hinanden og ingen porte for omverdenen. Dette giver containeriserede applikationer mulighed for nemt at kommunikere med hinanden uden ved et uheld at åbne adgang til omverdenen.
For det tredje, giv dine containere læselige værtsnavne med --name bar
docker run ... --network foo --name my-django django_app:test ...
docker run ... --network foo --name my-postgres postgres:alpine ...
Og fix til sidst forbindelsesstrengen - skift fra localhost
til containernavn, såsom my-postgres
:
...
POSTGRES_HOST=my-postgres
...