如何运行2个版本的Docker Compose Config?

时间:2020-07-07 15:46:39

标签: docker docker-compose dockerfile

我正在为部署SQL容器和服务容器的项目开发功能。 由于构建需要花费时间,并且我需要与较早的实现进行比较,因此最好组合两个不同的部署,然后在需要时恢复它们。我仍在探索Docker,可能已经错过了一些东西。以下是yml文件。

version: '3.3'

services:
  mssql:
    image: <MSSQL_IMAGE>
    ports: <AVAILABLE_PORTS>
    expose: <EXPOSED_PORTS>
    networks:
      ed_network:
        aliases:
          - mssql.local.com

  ed_server:
    image: "ed_local:latest"
    build:
      dockerfile: <PATH_TO_DOCKERFILE>
    ports: <AVAILABLE_PORTS>
    expose: <EXPOSED_PORTS>
    hostname: local.com
    privileged : true
    networks:
      ed_network:
        aliases:
          - ed.local.com
    depends_on: 
      - mssql

networks:
  ed_network:
    driver: bridge

volumes:
  mssql_data:

1 个答案:

答案 0 :(得分:1)

您可以使用环境变量(例如包含端口定义)来参数化您的docker compose文件,然后启动两次。只需一点点“魔术”,就可以计算出这些环境变量。 [这称为变量替换]

您还可以选择多个docker-compse文件覆盖值。您可以使用-f标志按顺序添加它们。然后,您可以使用-p提供一个项目名称来区分正在运行的配置/版本。设计替代对象时必须格外小心,以使该系统运行。

这两个选项都有其缺点,而且都不是很好。但是它们确实是原则性的。

我在书签中浏览了一下,找到了我读过的文章,以便在这里找到这些想法:https://runnable.com/docker/advanced-docker-compose-configuration