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ď č. 1Compose 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