PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Impossible de se connecter au serveur postgres dans un docker à partir d'une application dockerisée

Utilisez simplement la mise en réseau de pont définie par l'utilisateur. Tout d'abord, tirez parti de vos connaissances en lisant une courte explication des différents types de réseaux dans Docker :https://docs.docker.com/network/bridge/

Deuxièmement, définissez votre propre réseau

docker network create foo

Ensuite, exécutez vos conteneurs connectés à ce réseau :

docker run --rm --env-file /path/to/variables -d --network foo django_app:test
docker run --rm -d ... --network foo postgres:alpine ...

Remarquez dans les deux commandes --network foo . De plus, vous n'avez pas besoin pour exposer les ports dans ce cas - à l'intérieur des réseaux définis par l'utilisateur, cela se fait automatiquement :

Les conteneurs connectés au même réseau de pont défini par l'utilisateur exposent automatiquement tous les ports les uns aux autres, et aucun port au monde extérieur. Cela permet aux applications conteneurisées de communiquer entre elles facilement, sans ouvrir accidentellement l'accès au monde extérieur.

Troisièmement, donnez à vos conteneurs des noms d'hôte lisibles par l'homme avec --name bar

docker run ... --network foo --name my-django django_app:test ...
docker run ... --network foo --name my-postgres postgres:alpine ...

Et enfin corrigez la chaîne de connexion - changez de localhost au nom du conteneur, comme my-postgres :

...
POSTGRES_HOST=my-postgres
...