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

Comment connecter le conteneur d'application Web Docker au conteneur Docker PostgreSQL ?

Lors de l'utilisation de docker-compose v2, il n'est pas nécessaire de créer des liens entre les services. Docker 1.9 et 1.10 vous permettent de vous connecter à d'autres conteneurs sur le même réseau (personnalisé) via leur nom.

Vous devriez pouvoir vous connecter en utilisant soit le nom du service ou le nom du conteneur comme nom d'hôte. Étant donné que le nom du conteneur est généré par docker-compose, ce n'est pas vraiment pratique à utiliser, donc pour cette raison, docker-compose ajoute également un alias avec le nom du service pour chaque conteneur.

Prenons cet exemple très simple. J'ai utilisé un conteneur Nginx pour plus de commodité, mais la même chose devrait s'appliquer à votre situation ;

version: '2'
services:
  web_app:
    image: nginx
  db:
    image: nginx

Démarrez d'abord le projet (en supposant ;

$ docker-compose --project-name=test up -d
Creating network "test_default" with the default driver
Creating test_db_1
Creating test_web_app_1

Envoyez ensuite un ping au service "db" depuis l'intérieur de test_web_app_1 conteneur :

$ docker exec -it test_web_app_1 ping -c 2 db
PING db (172.18.0.2): 56 data bytes
64 bytes from 172.18.0.2: icmp_seq=0 ttl=64 time=0.108 ms
64 bytes from 172.18.0.2: icmp_seq=1 ttl=64 time=0.243 ms
--- db ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.108/0.175/0.243/0.068 ms

Si vous inspectez le test_db_1 conteneur, vous pouvez voir que docker-compose a automatiquement ajouté un alias "db" pour le test_db_1 conteneur ;

$ docker inspect test_db_1

Donne :(juste le NetworkSettings.Networks partie)

"Networks": {
    "test_default": {
        "IPAMConfig": null,
        "Links": null,
        "Aliases": [
            "db",
            "002b1875e61f"
        ],
        "NetworkID": "0f9e2cddeca79e5a46c08294ed61dee273828607f99014f6410bda887626be70",
        "EndpointID": "a941ab95586a8fdafc5075f9c5c44d745f974e5790ef6048b9e90115a22fb31f",
        "Gateway": "172.18.0.1",
        "IPAddress": "172.18.0.2",
        "IPPrefixLen": 16,
        "IPv6Gateway": "",
        "GlobalIPv6Address": "",
        "GlobalIPv6PrefixLen": 0,
        "MacAddress": "02:42:ac:12:00:02"
    }
}