I want to share the same VPN container among some docker-compose projects.
Inside the same docker-compose.yml, network_mode: service:vpn_container successfully route all traffics through vpn_container, but I can't use that method across docker-compose.ymls.
More concretely: my settings below:
First, to make VPN container reachable, I made virtual bridge named "vpn_network".
$ docker network create --driver bridge vpn_network
Then write docker-compose.ymls like:
// docker-compose.yml with VPN container
version: '3'
services:
vpn:
// container config
vpn_user1:
// container config
network_mode: 'service:vpn'
networks:
default:
external:
name: vpn_network
// docker-compose.yml without VPN container
version: '3'
services:
vpn_user2:
// container config
network_mode: 'service:vpn'
networks:
default:
external:
name: vpn_network
The former one works perfectly, while the latter says:
ERROR: Service 'vpn_user2' uses the network stack of service 'vpn' which is undefined.
even if the vpn container, connected to vpn_network, are running.
I know that's true I didn't defined 'vpn' service inside the latter one, but so how should I write?
--
I also want to know where the document that describes behaviors of network_mode: 'service:XXX' is, other than https://docs.docker.com/compose/compose-file/compose-file-v3/#network_mode (which tells not enough to me)