One of the elegant solutions is to create an external network.
For example, with two nginx using external networks (Internet and intranet):
Services Definition:
nginx1:
build: ./nginx
ports:
- "80:80"
networks:
- intranet
nginx2:
build: ./nginx
ports:
- "80:80"
networks:
- internet
Network Definition:
networks:
internet:
external: true
intranet:
external: true
, ,
192.168.178.69 - ip 10.5.1.22
docker network create -d bridge -o \
com.docker.network.bridge.host_binding_ipv4=192.168.178.69 internet
docker network create -d bridge -o \
com.docker.network.bridge.host_binding_ipv4=10.5.1.22 intranet