/ / Ako konfigurovať ukotvenie komponovať na použitie danej podsiete, ak je nastavená premenná, alebo vybrať pre seba, ak nie? - ukotvenie, prostredie-premenné, ukotvenie-compose, docker-networking

Ako nastaviť docker compose na používanie danej podsiete, ak je premenná nastavená, alebo si vyberiete, ak nie je? - dokovacia stanica, premenné prostredia, docker-compose, sieťovanie v dokoch

Mám nasledujúce konfigurácie siete v mojom ukotvení komponovať súbor.

networks:
default:
ipam:
driver: default
config:
- subnet: ${DOCKER_SUBNET}

Kedy DOCKER_SUBNET je nastavená podsiete špecifikovaná v tejto premennej. Keď premenná nie je nastavená, dostanem: ERROR: Invalid subnet : invalid CIDR address: pretože premenná je prázdna (čo je úplne rozumné).

Existuje spôsob, ako nastaviť ovládač ipam tak, že keď DOCKER_SUBNET premenná nie je nastavená, docker-compose vyberie dostupnú podsieť, ako by to normálne bolo, keby sa konfigurácia ipamu neposkytla?

odpovede:

2 pre odpoveď č. 1

Compose vyberie iba dostupnú podsietu, ak ju neposkytnete ipam konfiguráciu siete. Compose nemá pokročilé funkcie na zmenu konfigurácie za behu.

Mohli by ste sa rozhodnúť mimo komponovania, buď s viacerých súborov alebo šablónový systém, v shell alebo inom jazyku, ktorý spúšťa docker-compose Príkaz.

Oddeľte konfiguráciu siete od konfigurácie služby

docker-compose-net-auto.yml

version: "2.1"
networks:
default:

docker-compose-net-subnet.yml

version: "2.1"
networks:
default:
ipam:
driver: default
config:
- subnet: ${DOCKER_SUBNET}

Potom vytvorte skript launch.sh ktorý si zvolí, ktorý sieťový súbor má zahrnúť.

#!/bin/sh
if [ -z "$DOCKER_SUBNET" ]; then
docker-compose -f docker-compose.yml -f docker-compose-net-auto.yml up
else
docker-compose -f docker-compose.yml -f docker-compose-net-subnet.yml up
fi