Not sure if it covers your use case, but for Home Assistant, to expose a single fixed IP and have a private network for containers to communicate, I did it like this;
version: '3.9'
###
networks:
hass:
bond0:
external: true
###
services:
homeassistant:
container_name: Home-Assistant
image: ghcr.io/home-assistant/home-assistant:stable
networks:
bond0:
ipv4_address: 192.168.xx.xx
hass:
volumes:
- /mnt/docker/appdata/HASS/Home-Assistant:/config
restart: always
##
whisper:
container_name: Whisper
image: rhasspy/wyoming-whisper
networks:
- hass
volumes:
- /mnt/docker/appdata/HASS/Whisper:/data
command: --model small-int8 --language en --beam-size 5
restart: always
##
piper:
container_name: Piper
image: rhasspy/wyoming-piper
networks:
- hass
volumes:
- /mnt/docker/appdata/HASS/Piper:/data
command: --voice en-us-ryan-medium
restart: always
All three containers can communicate via the `hass` network, and the HA container has a fixed IP that is exposed via macvlan.
Although not in this example (and not yet migrated to Unraid), my InfluxDB stack uses a similar setup, with InfluxDB itself on a static macvlan IP, but the Adminer container exposed via port mapping on the host IP. Just add a `ports:` section as usual...
Cheers.