Luk*_*mus 8 environment-variables docker docker-compose docker-networking
我的 docker compose 文件中有以下网络配置。
networks:
default:
ipam:
driver: default
config:
- subnet: ${DOCKER_SUBNET}
Run Code Online (Sandbox Code Playgroud)
当DOCKER_SUBNET被设置时,如预期可以用来在变量中指定的子网。当变量未设置时,我得到:ERROR: Invalid subnet : invalid CIDR address:因为变量是空白的(这是完全合理的)。
有没有办法配置 ipam 驱动程序,以便在DOCKER_SUBNET未设置变量时,docker -compose 将选择一个可用的子网,就像未提供 ipam 配置时通常会做的那样?
小智 10
networks:
Mynetwork:
driver: bridge
ipam:
driver: default
config:
- subnet: "192.168.0.0/24"
gateway: "192.168.0.1"
#- default:
#driver: bridge
Run Code Online (Sandbox Code Playgroud)
如果您不ipam为网络提供任何配置,Compose 只会选择一个可用的子网。Compose 没有动态修改配置的高级功能。
您可以在 compose 之外做出决定,使用多个 compose 文件或基于模板的系统,在 shell 或启动docker-compose命令的其他语言中。
将网络配置与服务配置分开
docker-compose-net-auto.yml
version: "2.1"
networks:
default:
Run Code Online (Sandbox Code Playgroud)
docker-compose-net-subnet.yml
version: "2.1"
networks:
default:
ipam:
driver: default
config:
- subnet: ${DOCKER_SUBNET}
Run Code Online (Sandbox Code Playgroud)
然后创建一个脚本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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8406 次 |
| 最近记录: |