Docker组合:单个主机上有多个独立的环境,可以覆盖卷和端口
我们需要使用一个单独的撰写文件 ,在单个主机上创build多个独立的应用程序。
我意识到,通过使用-p
选项指定项目名称,我们可以在一台主机上使用docker撰写多个独立的envs。
但是,是否有可能重写ports:
和volumes:
在不同的环境的撰写文件,而不是有2个独立的docker组成文件?
例如,我想覆盖下面的属性,最好通过命令行参数。
对于开发环境
ports: 8081:8080 volumes: /etc/myapp/dev/properties/:/etc/myapp/properties
对于QA环境
ports: 8082:8080 volumes: /etc/myapp/qa/properties/:/etc/myapp/properties
您可以使用template.yml并传递想要生成docker-compose.yml的variables
首先,用以下内容创build一个template.yml
:
version: "2" ... ports: "$HOST_PORT":8080 volumes: "$HOST_VOLUME":/etc/myapp/properties
现在,你可以用环境创build一个你想要的variables的脚本。 对于开发环境,它看起来像这样:
#!/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";
这将生成具有具体值docker-compose.yml
。
以下是一个用法示例: https : //github.com/bsferreira/mysql-fabric