docker-compose.yml紧凑型通用配置
具有下面的docker-compose.yml紧凑型通用配置,docker,docker-compose,Docker,Docker Compose,具有下面的docker compose.yml文件,其中包含具有相同配置的n个容器(image,卷等),但命令属性除外。有没有办法不重复地写?然后,如果我必须改变一些配置,我可以在一个地方做,而不是改变所有的事件 一个选项是使用我在图像中使用的变量,但这并不能解决我想向所有容器添加另一个卷的问题 注:如果需要,不要介意更改为第3版 version: '2' services: container1: image: ${CONTAINER_IMAGE} user: my_use
docker compose.yml
文件,其中包含具有相同配置的n个容器(image
,卷
等),但命令
属性除外。有没有办法不重复地写?然后,如果我必须改变一些配置,我可以在一个地方做,而不是改变所有的事件
一个选项是使用我在图像中使用的变量,但这并不能解决我想向所有容器添加另一个卷的问题
注:如果需要,不要介意更改为第3版
version: '2'
services:
container1:
image: ${CONTAINER_IMAGE}
user: my_user
hostname: my_hostname
command: unique running command for container1
env_file:
- 'docker.env'
volumes:
- ./builds/image:/image
- ~/workspace/component1:/component1
- ~/workspace/component2:/component2
links:
- db:db
- elastic-docker:elastic-docker
- graphite:graphite-docker
- zookeeper:zookeeper
depends_on:
- rabbitmq
container2:
image: ${CONTAINER_IMAGE}
user: my_user
hostname: my_hostname
command: unique running command for container2
env_file:
- 'docker.env'
volumes:
- ./builds/image:/image
- ~/workspace/component1:/component1
- ~/workspace/component2:/component2
links:
- db:db
- elastic-docker:elastic-docker
- graphite:graphite-docker
- zookeeper:zookeeper
depends_on:
- rabbitmq
container3:
image: ${CONTAINER_IMAGE}
user: my_user
hostname: my_hostname
command: unique running command for container3
env_file:
- 'docker.env'
volumes:
- ./builds/image:/image
- ~/workspace/component1:/component1
- ~/workspace/component2:/component2
links:
- db:db
- elastic-docker:elastic-docker
- graphite:graphite-docker
- zookeeper:zookeeper
depends_on:
- rabbitmq
#and so on..
谢谢 您可以使用extends
关键字重用第一个容器的配置
version: '2'
services:
c1:
image: alpine
command: echo 1
c2:
extends: c1
command: echo 2
或者使用第二个文件作为模板
version: '2'
services:
template:
image: alpine
version: '2'
services:
c1:
extends:
file: template.yml
service: template
command: echo 1
但是,只有在绝对需要的情况下,才应该使用不同的配置,因为没有配置,您可以将其部署为服务,并使用docker service scale service=3
或使用docker compose(v3)轻松地对其进行扩展
您可以使用环境变量。或者你真正需要的是一个模板引擎。有许多模板引擎可用。我过去用过的一个是confd
。您可以在下面的链接上获得相同的快速入门指南
这将允许您使用toml
config文件循环并拥有不同的卷映射和不同的容器计数
您甚至可以使用基于BASH的循环和脚本来生成compose文件。但是维护您的文件会变得越来越困难
PS:您可能感兴趣的一些链接:
deploy:
mode: replicated
replicas: 3