Simplemente haga uso de la red de puente definida por el usuario. Primero, aproveche su conocimiento leyendo una breve explicación de los diferentes tipos de redes en Docker:https://docs.docker.com/network/bridge/
Segundo, defina su propia red
docker network create foo
A continuación, ejecute sus contenedores conectados a esta red:
docker run --rm --env-file /path/to/variables -d --network foo django_app:test
docker run --rm -d ... --network foo postgres:alpine ...
Observe en ambos comandos --network foo
. Además, no es necesario para exponer los puertos en este caso - dentro de las redes definidas por el usuario se hace automáticamente:
Los contenedores conectados a la misma red puente definida por el usuario exponen automáticamente todos los puertos entre sí y ningún puerto al mundo exterior. Esto permite que las aplicaciones en contenedores se comuniquen entre sí fácilmente, sin abrir accidentalmente el acceso al mundo exterior.
En tercer lugar, dé a sus contenedores nombres de host legibles por humanos con --name bar
docker run ... --network foo --name my-django django_app:test ...
docker run ... --network foo --name my-postgres postgres:alpine ...
Y finalmente arregle la cadena de conexión:cambie de localhost
al nombre del contenedor, como my-postgres
:
...
POSTGRES_HOST=my-postgres
...