大家好,欢迎来到IT知识分享网。
docker-compose -f xxx -f xxxx :会将多个compose,yaml文件 合并到一起 当指定了多个文件时(包括没指定-f但同时存在docker-compose.yml和docker-compose.override.yml文件),Compose会将多个文件合并成一个配置文件,合并的结果与指定文件的顺序有关。合并有两种操作,没有的添加,相同的覆盖。
应用多个 compose 配置文件
docker-compose 命令默认使用的配置文件是当前目录中的 docker-compose.yml 文件,当然我们可以通过 -f 选项指定一个其它名称的配置文件,比如:
$ docker-compose -f docker-compose-dev.yml up
更酷的是我们可以添加多个 -f 选项,docker-compose 会自动合并它们,当然也会根据先后顺序把一些重复的配置项覆盖掉。 下面我们来演示一个常见的使用场景,先创建一个名称为 docker-compose-base.yml 的配置文件,其内容如下:
version: '3' services: web: build: . redis: image: "redis:latest"
然后再创建名称为 docker-compose-dev.yml 的配置文件:
version: '3' services: web: ports: - "5000:5000"
下面的命令会同时应用这两个配置文件:
$ docker-compose -f docker-compose-base.yml -f docker-compose-dev.yml config
config 命令不会执行真正的操作,而是显示 docker-compose 程序解析到的配置文件内容:
很显然,我们指定的两个配置文件的内容被合并了。接下来我们再来看看配置文件覆盖的情况。新创建一个名为 docker-compose-prod.yml 的配置文件,编辑其内容如下:
version: '3' services: web: ports: - "80:5000" redis: image: "redis:alpine"
然后执行下面的命令:
$ docker-compose -f docker-compose-base.yml -f docker-compose-prod.yml config
其实 docker-compse 还默认还支持一种合并、覆盖配置文件的写法,就是使用约定的文件名称 docker-compose.yml 和 docker-compose.override.yml。下面我们把 docker-compose-base.yml 文件改名为 docker-compose.yml,把 docker-compose-prod.yml 文件改名为 docker-compose.override.yml,并直接执行不带 -f 选项的命令:
$ docker-compose config
结果和前面是一样的,docker-compose 自动合并了配置文件 docker-compose.yml 和 docker-compose.override.yml。这种方式虽然省去了指定 -f 选项的麻烦但其缺点也是很明显的,就是无法指定更多不同的应用场景。
$ docker-compose -f xxx -f xxxx config>xxxxx:合并多个compose.yaml;不会运行服务;
docker stack deploy 多个 -c:新版本的18以上的docker ,合并启动多个docker-compose
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/103858.html


