Docker Compose合并数组用于YAML别名和锚点

安德烈·乔亚拉(Andrei Cioara)

我有以下破碎的docker-compose文件

version: '3.4'

x-vols1: &vols-1
    - /home/:/home/

x-vols2: &vols-2
    - /tmp/:/tmp/

services:
    app1:
        container_name: app1
        image: app1
        volumes:
            <<: *vols-1
    app2:
        container_name: app2
        image: app2
        volumes:
            <<: *vols-1
            <<: *vols-2

失败并出现以下错误

$ docker-compose -f test.yaml config
ERROR: yaml.constructor.ConstructorError: while constructing a mapping
  in "./test.yaml", line 14, column 13
expected a mapping for merging, but found scalar
  in "./test.yaml", line 4, column 7

问题1:如何在中合并数组docker-compose我尝试使用的语法是合并字典的语法

问题2:如果无法合并数组,是否有解决方法?

用例:我有多个服务,其中一些服务映射一些卷,其他服务映射其他卷,其他服务映射所有卷。我不想重复我自己。

谢谢!

安德烈·乔亚拉(Andrei Cioara)

可以通过使用多个docker-compose文件(每个卷一个文件)来实现所需的行为请注意,锚和别名不是必需的,但要使其与问题保持一致。

base.yaml

version: '3.4'

services:
    app1:
        container_name: app1
        image: app1
    app2:
        container_name: app2
        image: app2

vol1.yaml

version: '3.4'

x-vols1: &vols-1
    volumes:
        - /home/:/home/

services:
    app1:
        container_name: app1
        image: app1
        <<: *vols-1
    app2:
        container_name: app2
        image: app2
        <<: *vols-1

vol2.yaml

version: '3.4'

x-vols2: &vols-2
    volumes:
        - /tmp/:/tmp/

services:
    app2:
        container_name: app2
        image: app2
        <<: *vols-2

验证为

$ docker-compose -f base.yaml -f vol1.yaml -f vol2.yaml config

结果

services:
  app1:
    container_name: app1
    image: app1
    volumes:
    - /home:/home:rw
  app2:
    container_name: app2
    image: app2
    volumes:
    - /home:/home:rw
    - /tmp:/tmp:rw
version: '3.4'

附加文档https://docs.docker.com/compose/extends/

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用mysql和自己的docker容器运行docker-compose

来自分类Dev

Docker / Docker-Compose中的NFS卷

来自分类Dev

Docker-compose和pdb

来自分类Dev

卓:用于Docker Compose项目的CodeDeploy?

来自分类Dev

docker-machine,docker-compose和Google Cloud

来自分类Dev

卷和docker-compose

来自分类Dev

Docker Compose和Rabbitmq Docker映像插件

来自分类Dev

Docker:Dockerfile与docker-compose.yml

来自分类Dev

Jenkins和docker-compose

来自分类Dev

使用Docker / Docker compose运行Postgres迁移

来自分类Dev

使用Docker服务和Docker Compose进行强大的配置旋转

来自分类Dev

Docker Compose与React和Nginx

来自分类Dev

Yaml使用Python脚本从Docker合并

来自分类Dev

Docker:使用docker-compose复制文件和目录

来自分类Dev

限制全球docker(或docker-compose)资源

来自分类Dev

Reflex Golang与docker,docker-compose和makefile

来自分类Dev

以下yaml文件中的docker compose错误?

来自分类Dev

docker run和docker-compose有不同的结果吗?

来自分类Dev

docker compose yaml-命令

来自分类Dev

Docker-compose和Docker-swarm

来自分类Dev

Docker:Dockerfile与docker-compose.yml

来自分类Dev

用于开发和生产的Docker

来自分类Dev

定义Docker命令别名

来自分类Dev

用于超级账本结构的 docker compose 文件出现 YAML 错误

来自分类Dev

docker 在 docker 中 docker compose

来自分类Dev

用于测试的简单 Docker Compose 捆绑

来自分类Dev

docker-compose 和部署

来自分类Dev

Docker --add-host 和 Docker compose

来自分类Dev

用于工作 docker-compose (postgres) 的等效 docker run 命令