和号(&)在docker compose .yml文件中的含义

luk*_*aus 20 docker docker-compose

我最近遇到了这个,并想知道是什么&django意思

version: '2'

services:
  django: &django
Run Code Online (Sandbox Code Playgroud)

在与此相关的文档中看不到任何内容.

提前致谢

Tar*_*ani 28

这些被称为锚.我建议您查看以下URL以获取更多详细信息

https://learnxinyminutes.com/docs/yaml/

按照部分 EXTRA YAML FEATURES

YAML还有一个名为"锚点"的便捷功能,可让您轻松复制文档中的内容.这两个键都具有相同的值:anchored_content:&anchor_name此字符串将显示为两个键的值.other_anchor:*anchor_name

锚可用于复制/继承属性

base: &base
    name: Everyone has same name

foo: &foo
    <<: *base
    age: 10

bar: &bar
    <<: *base
    age: 20
Run Code Online (Sandbox Code Playgroud)


Mik*_*ike 18

为了补充 Tarun 的答案,&标识了一个锚点,并且*是指回锚点的别名。它在YAML 规范中描述如下:

在表示图中,一个节点可能出现在多个集合中。序列化此类数据时,节点的第一次出现由锚点标识。每个后续出现都被序列化为一个别名节点,它引用回这个锚点。

边注:

对于那些想开始在 docker-compose 文件中使用锚点的人,有更强大的方法可以通过使用docker-compose YAML 扩展字段来制作可重用的锚点。

version: "3.4"

# x-docker-data is an extension and when docker-compose
# parses the YAML, it will not do anything with it

x-docker-data: &docker-file-info
  build:
    context: .
    dockerfile: Dockerfile

services:
  some_service_a:
    <<: *docker-file-info
    restart: on-failure
    ports:
      - 8080:9090
  some_service_b:
    <<: *docker-file-info
    restart: on-failure
    ports:
      - 8080:9595
Run Code Online (Sandbox Code Playgroud)

  • 值得强调的是,它不必称为“x-docker-data”。“任何以 x- 开头的顶级键都将被 compose 忽略。” (10认同)