network_mode: service:XXX over the bridge

Viewed 351

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)

0 Answers
Related