sql >> Base de Datos >  >> RDS >> PostgreSQL

No se pudo conectar al servidor de postgres en una ventana acoplable desde una aplicación dockerizada

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
...