PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Não foi possível conectar ao servidor postgres em uma janela de encaixe de um aplicativo encaixado


Basta fazer uso da rede de ponte definida pelo usuário. Primeiro, aproveite seu conhecimento lendo uma breve explicação dos diferentes tipos de redes no Docker:https://docs.docker.com/network/bridge/

Segundo, defina sua própria rede
docker network create foo

Em seguida, execute seus contêineres conectados para esta rede:
docker run --rm --env-file /path/to/variables -d --network foo django_app:test
docker run --rm -d ... --network foo postgres:alpine ...

Observe em ambos os comandos --network foo . Além disso, você não precisa para expor portas neste caso - dentro de redes definidas pelo usuário, isso é feito automaticamente:

Os contêineres conectados à mesma rede bridge definida pelo usuário expõem automaticamente todas as portas umas às outras e nenhuma porta ao mundo exterior. Isso permite que aplicativos em contêiner se comuniquem facilmente, sem abrir acidentalmente o acesso ao mundo exterior.

Terceiro, dê aos seus contêineres nomes de host legíveis por humanos com --name bar
docker run ... --network foo --name my-django django_app:test ...
docker run ... --network foo --name my-postgres postgres:alpine ...

E, finalmente, corrija a string de conexão - mude de localhost para o nome do contêiner, como my-postgres :
...
POSTGRES_HOST=my-postgres
...