微信搜索superit|邀请体验:大数据, 数据管理、OLAP分析与可视化平台 | 赞助作者:赞助作者

同时运行多套 docker-compose up 的环境,不同网段相互隔离

docker aide_941 8℃

 

shenyuan · 2017-11-05 11:08:02 +08:00 · 2284 次点击

这是一个创建于 1049 天前的主题,其中的信息可能已经有所发展或是发生改变。

目前的方法是写一个 docker-compose.yml 的模本文件,然后去替换里面的相关参数,例如模板文件如下:

version: '2'
services:
  db:
    image: mysql
    container_name: $db_name
    networks:
      - app_net
  web:
    build: ./web
    expose:
      - "80"
      - "443"
      - "8080"
    networks:
      app_net:
        ipv4_address: $web_ip
    container_name: $web_name
    depends_on:
      - db
    links:
      - db

networks:
  app_net:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: $subnet
          gateway: $gateway

模板文件通过 python string 的 Template 进行变量替换,通过替换 subnet、gateway 以及 container_name、web_ip 的方法来生成不同的 docker-compose.yml 文件,感觉这种方式不是很优雅,有没有更好的方案呢?

3 条回复    2017-11-05 11:55:08 +08:00

dangyuluo
    1

dangyuluo   2017-11-05 11:25:58 +08:00

可以考虑在不同的 docker-compose.yaml 目录下生成不同的.env 环境文件?这样比较好管理一点。
然后在里面定义网络,ip, container 等等
dangyuluo
    2

dangyuluo   2017-11-05 11:28:08 +08:00   ❤️ 1

你可以生成环境文件,保持 yaml 模版不变,然后在运行 docker-compose 的时候使用–env-file 参数来指定。
Elegant
shenyuan
    3

shenyuan   2017-11-05 11:55:08 +08:00

@dangyuluo 初步测试应该是可行的,修改模板文件里面的$subnet 为 “${SUBNET}”,然后.env 文件里指定 SUBNET=172.18.1.0/24 这种方式,在 docker-compose up 的时候默认会到当前目前下去找.env 里面的环境变量进行替换,用 docker-compose config 也验证了的确是进行了替换

转载请注明:SuperIT » 同时运行多套 docker-compose up 的环境,不同网段相互隔离

喜欢 (3)or分享 (0)