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"
}
}