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