Når du bruger docker-compose v2, er det ikke nødvendigt at oprette links mellem tjenester. Docker 1.9 og 1.10 giver dig mulighed for at oprette forbindelse til andre containere på det samme (brugerdefinerede) netværk gennem deres navn.
Du bør være i stand til at oprette forbindelse ved at bruge enten navnet på tjenesten eller navnet på containeren som værtsnavn. I og med at navnet på containeren er genereret af docker-compose, er dette ikke rigtig praktisk at bruge, så derfor tilføjer docker-compose også et alias med servicenavnet til hver container.
Tag dette meget enkle eksempel. Jeg har brugt en Nginx-beholder for nemheds skyld, men det samme burde gælde for din situation;
version:'2'services:web_app:image:nginx db:image:nginx
Start først projektet (forudsat;
$ docker-compose --project-name=test up -dOpretter netværk "test_default" med standarddriverenCreating test_db_1Creating test_web_app_1
Ping derefter "db"-tjenesten inde fra test_web_app_1
container:
$ docker exec -it test_web_app_1 ping -c 2 dbPING db (172.18.0.2):56 databytes64 bytes fra 172.18.0.2:icmp_seq=0 ttl=64 time=0.108 ms64 bytes fra 8ic.102.q. =1 ttl=64 tid=0,243 ms--- db ping statistik ---2 pakker transmitteret, 2 pakker modtaget, 0 % pakketab rundtur min/avg/max/stddev =0,108/0,175/0,243/0,068 ms
Hvis du inspicerer test_db_1
container, kan du se, at docker-compose automatisk tilføjede et "db"-alias for test_db_1
container;
$ docker inspicer test_db_1
Giver:(bare NetworkSettings.Networks
del)