docker compers .yml文件中&符号(&)的含义

时间:2017-08-21 20:56:42

标签: docker docker-compose

我最近遇到过这种情况,并想知道&django的含义是什么

version: '2'

services:
  django: &django

在与此相关的docs中看不到任何内容。

提前致谢

2 个答案:

答案 0 :(得分:18)

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

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

按照EXTRA YAML FEATURES

部分进行操作
  

YAML还有一个名为' anchors'的便利功能,可让您轻松复制   整个文档中的内容。这两个键都具有相同的值:   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

答案 1 :(得分:1)

为补充塔伦(Tarun)的回答,&标识了一个锚点,而*是一个指向锚点的别名。 YAML specification中对此进行了以下描述:

  

在表示图中,一个节点可能出现在多个节点中   采集。序列化此类数据时,   节点由锚点标识。随后的每个事件是   序列化为一个别名节点,该节点返回该锚点。

旁注:

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

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