1

我在我的泊坞窗撰写文件中有以下网络配置。如果设置了变量,如何配置docker组合使用给定的子网,或者如果它不是自己选择?

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

DOCKER_SUBNET被设置时,如预期可以用来在变量中指定的子网。当变量未设置时,我得到:ERROR: Invalid subnet : invalid CIDR address:,因为变量是空白的(这是完全合理的)。

有没有办法配置ipam驱动程序,使得当DOCKER_SUBNET变量没有设置时,docker-compose会选择一个可用的子网,就像在没有给出ipam配置时通常那样?

回答

1

如果您没有为网络提供任何ipam配置,撰写将只会选择一个可用的子网。 Compose没有高级功能来即时修改配置。

您可以使用shell或某种启动docker-compose命令的其他语言,在multiple compose files或基于模板的系统之外作出决定。从你

单独的网络配置服务配置

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} 

然后创建一个脚本launch.sh,使其中的网络文件包含的选择。

#!/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 
相关问题