Saat menggunakan docker-compose v2, tidak perlu membuat tautan antar layanan. Docker 1.9 dan 1.10 memungkinkan Anda terhubung ke container lain di jaringan (khusus) yang sama melalui namanya.
Anda seharusnya dapat terhubung menggunakan salah satu nama layanan atau nama wadah sebagai nama host. Mengingat bahwa nama wadah dihasilkan oleh docker-compose, ini tidak terlalu nyaman untuk digunakan, jadi karena alasan itu, docker-compose juga menambahkan alias dengan nama layanan untuk setiap wadah.
Ambil contoh yang sangat sederhana ini. Saya telah menggunakan wadah Nginx untuk kenyamanan, tetapi hal yang sama berlaku untuk situasi Anda;
version: '2'
services:
web_app:
image: nginx
db:
image: nginx
Pertama memulai proyek (dengan asumsi;
$ docker-compose --project-name=test up -d
Creating network "test_default" with the default driver
Creating test_db_1
Creating test_web_app_1
Kemudian ping layanan "db" dari dalam test_web_app_1
wadah:
$ 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
Jika Anda memeriksa test_db_1
container, Anda dapat melihat bahwa docker-compose secara otomatis menambahkan alias "db" untuk test_db_1
wadah;
$ docker inspect test_db_1
Memberikan:(hanya NetworkSettings.Networks
bagian)
"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"
}
}