Docker-compose to link outside containers ?
Let say we have the two docker-compose files in separate directories which we want to link together.
First, we have:
version: '2'
services:
A:
image: nginx
It is important to know the specific network name (external_name) to be used by the first docker-compose up
. We’ll need to run the first with -p
to define the project name which is a part of the network name in {project_name}_default
fashion.
In this case, run docker-compose -p A up
it will automatically create A_default as a default network for the compose.
Second, we have:
version: '2'
networks:
A_network:
external:
name: A_default
services:
B:
image: debian
command: bash
networks:
- default
- A_network
Now, run it, this time I will just run docker-compose run B
for the purspose of accessing the shell.
And try, pinging A (across the network).
root@a4d147584211:/# ping A
PING api (172.21.0.2): 56 data bytes
64 bytes from 172.21.0.2: icmp_seq=0 ttl=64 time=0.101 ms
64 bytes from 172.21.0.2: icmp_seq=1 ttl=64 time=0.072 ms
64 bytes from 172.21.0.2: icmp_seq=2 ttl=64 time=0.072 ms
64 bytes from 172.21.0.2: icmp_seq=3 ttl=64 time=0.073 ms
Understand that, B also has its own default network, but it also taps to the external one as defined in A_network which ultimately connects to the A_default external network created by the first compose.