docker-compose.yml文件中&符号的含义

82

最近我看到这个词,想知道&django是什么意思

Translated:

最近我看到这个词,想知道&django是什么意思

version: '2'

services:
  django: &django

我在文档中找不到与此相关的内容。

2个回答

94

这些是YAML中称为锚点的功能,与Docker Compose无关。建议您查看下面的网址以了解更多详情

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

35
为了补充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

20
值得强调的是,它不一定要被称为“x-docker-data”。 “任何以 x- 开头的顶级键都将被 Compose 忽略。” - radzak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接