首页 > 解决方案 > 如何运行 Docker Compose Config 的 2 个版本?

问题描述

我正在开发一个部署 SQL 容器和服务容器的项目的功能。由于构建需要时间,并且我需要与旧实现进行比较,因此最好组合 2 个不同的部署,然后在需要时恢复它们。我仍在探索 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:

标签: dockerdocker-composedockerfile

解决方案


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

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

这两种选择都有其缺点,而且都不是很好。但他们确实在原则上工作。

我在书签中看了一些,发现我读过的文章在这里得到了这些想法:https ://runnable.com/docker/advanced-docker-compose-configuration


推荐阅读