docker-compose 语法中的 & 和 * 运算符是什么以及如何使用它们?

Kid*_*g_C 2 docker-compose

我注意到项目的 docker-compose.yml 文件在各种服务中包含诸如&id001*id001&id002and 之类的语法*id002。例如:

version: '2.3'
services:
  nlp-servlet:

    ...some configs ...

    logging: &id001
      driver: json-file
      options:
        max-file: '10'
        max-size: 10m

  consul:
      ... some config ...
    logging: *id001

  redir:
       ... some config ...
    volumes:
      - redir_log:/usr/src/app/log
    logging: *id001

  tbgas-db:
     ... some config ...
     volumes:
        - tbgas_db:/var/lib/mysql
     logging: *id001

volumes:
  logdir: &id002
    driver: local
  redir_log: *id002
  tbgas_db: *id002
Run Code Online (Sandbox Code Playgroud)

我可以猜测它们id001是如何id002工作的,而且我认为它们的工作方式有点不同。准确吗?

另外,我在哪里可以找到有关此类语法的一些文档?他们叫什么?

Leo*_*ino 6

这些是YAML 锚点:& 将其声明为锚点,* 引用它,并被锚点中的实际内容替换。您可以在撰写文件参考的本部分中查看其用法的更多示例。

如果可能的话,我会考虑将它们移动到扩展字段中,并为它们提供描述性名称以避免混淆。