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')
我的 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')