Docker-Compose file has yaml.scanner.ScannerError : mapping values are not allowed here

Docker-Compose file has yaml.scanner.ScannerError : mapping values are not allowed here

我的 objective 是在 docker 中使用 1 个桥接网络用于我所有的 docker-compose 在同一主机上,对于我的所有域。

我已经为我的 docker-compose 基础设施配置了 3 个 yml 文件,并且我正在为它们使用 1 个外部桥接网络 dockerprometheus_back-tier。 一个用于反向代理(traefik)的 YAML 文件和一个用于每个域名的 YAML 文件(2 个文件)。

每次我尝试使用命令 docker-compose -f mail.yml down && docker-compose -f mail.yml up -d 停止和启动最后一个 YAML 时,我得到:

yaml.scanner.ScannerError: mapping values are not allowed here

在注释了 yml 3 中的大部分命令后,我明白问题出在我添加行 name: dockerprometheus_back-tier

但是在其他 2 个 yml 文件中,我已经做了完全相同的配置来使用这个网络,而且 yaml 处理器没有抱怨。

YAML 1

version: '3'

networks:
  internal:
    external: false
  prometheus:
    external: true
      name: dockerprometheus_back-tier

YAML 2

version: '3'

networks:
  onlyinternal:
    driver: bridge
    external: false
  prometheus:
    external: true
      name: dockerprometheus_back-tier


docker network ls
04e3348408c4        dockerprometheus_back-tier    bridge              local

我应用了 dos2unix 来清理 YAML 3 上的编码,但没有改变任何东西。我直接复制了 YAML 3,保留第一行,并尝试启动它,但它也因同样的错误而失败。 docker 中是否存在从外部文件使用 3 倍相同桥接网络的限制?如何解决?

Docker 版本 18.09.3,内部版本 774a1f4,CentOS Linux 版本 7.6.1810(核心)

YAML 3:

version: '3'

networks:
  mail_network:
    driver: bridge
    external: false
  prometheus:
    external: true
      name: dockerprometheus_back-tier

您提交的三个YAML文档均存在同样的问题,均无效

作为键的值 external 你有一个多行不带引号的标量

true name: dockerprometheus_back-tier

在未加引号的标量中,您不能在值指示符后跟空格,因为这可能表示一个新键。引用多线标量:

networks:
  mail_network:
    driver: bridge
    external: false
  prometheus:
    external: "true
      name: dockerprometheus_back-tier"

或者如果 name 应该是与 external 处于同一级别的键,请确保它是这样缩进的:

networks:
  mail_network:
    driver: bridge
    external: false
  prometheus:
    external: true
    name: dockerprometheus_back-tier

您可以在 YAML 中包含类似以下内容:

  prometheus:
    external:
      name: dockerprometheus_back-tier

当然,一个键不能同时具有标量节点 (true) 映射节点 ('name: dockerprometheus_back-tier')