Docker compose:单个主机上具有可覆盖卷和端口的多个隔离环境
我们需要在一台主机上创建应用程序的多个独立环境,使用单个编写文件 我意识到,通过使用Docker compose:单个主机上具有可覆盖卷和端口的多个隔离环境,docker,docker-compose,Docker,Docker Compose,我们需要在一台主机上创建应用程序的多个独立环境,使用单个编写文件 我意识到,通过使用-p选项,我们可以在单个主机中使用docker compose创建多个独立的环境 但是,是否可以在不同环境下覆盖撰写文件中的端口:和卷:,而不使用两个单独的docker撰写文件 例如,我希望重写以下属性,最好是通过命令行参数 用于开发环境 ports: 8081:8080 volumes: /etc/myapp/dev/properties/:/etc/myapp/properties ports:
-p
选项,我们可以在单个主机中使用docker compose创建多个独立的环境
但是,是否可以在不同环境下覆盖撰写文件中的端口:
和卷:
,而不使用两个单独的docker撰写文件
例如,我希望重写以下属性,最好是通过命令行参数
用于开发环境
ports:
8081:8080
volumes:
/etc/myapp/dev/properties/:/etc/myapp/properties
ports:
8082:8080
volumes:
/etc/myapp/qa/properties/:/etc/myapp/properties
用于QA环境
ports:
8081:8080
volumes:
/etc/myapp/dev/properties/:/etc/myapp/properties
ports:
8082:8080
volumes:
/etc/myapp/qa/properties/:/etc/myapp/properties
您可以使用template.yml并传递要生成docker-compose.yml的变量 首先,创建一个包含以下内容的
模板.yml
:
version: "2"
...
ports:
"$HOST_PORT":8080
volumes:
"$HOST_VOLUME":/etc/myapp/properties
现在,您可以使用环境所需的变量创建脚本。对于开发环境,它将如下所示:
#!/bin/bash
# Variables to use in template.yml
export HOST_PORT="8081"
export HOST_VOLUME="/etc/myapp/dev/properties/"
# build docker-compose.yml from the template
source env.sh; rm -rf docker-compose.yml; envsubst < "template.yml" > "docker-compose.yml";
#/bin/bash
#要在template.yml中使用的变量
导出主机\u端口=“8081”
export HOST_VOLUME=“/etc/myapp/dev/properties/”
#从模板构建docker-compose.yml
来源env.sh;rm-rf docker-compose.yml;envsubs<“template.yml”>“docker compose.yml”;
这将生成一个带有具体值的docker compose.yml
这里有一个用法示例:我认为可以使用env变量。在这里看到更多