docker - 如何运行 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:
解决方案
您可以使用环境变量(例如包含端口定义)参数化您的 docker compose 文件,然后启动它两次。借助一点 shell 的“魔法”,可以计算出这些环境变量。[这称为变量替换]
您还可以选择多个 docker-compse 文件覆盖值。-f
您可以使用标志按顺序添加它们。然后,您可以使用-p
项目名称来区分正在运行的配置/版本。必须非常小心地设计覆盖以使该系统运行。
这两种选择都有其缺点,而且都不是很好。但他们确实在原则上工作。
我在书签中看了一些,发现我读过的文章在这里得到了这些想法:https ://runnable.com/docker/advanced-docker-compose-configuration
推荐阅读
- python-3.x - 如何将数组转换为图像(png,jpg)?
- apache-spark - 在pyspark中将两个RDD相乘
- parsing - SEC 公司文件:是
标记有效的 SGML?如果是这样,如何解析它? - beautifulsoup - Beautiful Soup - 如何在 HTML 中的特定项目之后查找标签?
- node.js - 使用 Cheerio 格式化数据
- reactjs - 反应上下文:TypeError:无法读取未定义的属性“areResultsVisible”
- javascript - 如果不满足功能,如何停止 javascript 提示
- list - Haskell:为什么 (x:xs) 只匹配一个元素的列表?
- kdb - 如何从 kdb 中的 Date(yyyy.mm.dd) 获取 (mm.dd)?
- laravel - 如何将一种方法共享给 Laravel 中的所有控制器?