compose.yml文件,如下所示:

version: '2'
services:
  discovery-microservice:
    build: discovery-microservice
      context: /discovery-microservice/target/docker
      dockerfile: Dockerfile
  ports:
   - "8761:8761"

当我执行它时,我收到以下错误:

yaml.scanner.ScannerError: mapping values are not allowed here
in "C:\...\docker-compose.yml", line 5, column 14

从我看来,格式没有问题,例如缺少空格。 我的总体目标是指定一个开发模式 docker-compose 文件,将其指向不同模块的目标目录。
我在这里做错了什么?

#1楼 票数:148

好吧,我浪费了大约 3 个小时来调试类似的问题。

如果你们遇到以下错误

ERROR: yaml.scanner.ScannerError: mapping values are not allowed here
in ".\docker-compose.yml", line 2, column 9

这是因为之间需要一个空格

version:'3' <-- 这是错误的

version: '3' <-- 这是正确的。

另外,如果您使用的是 eclipse,请帮自己一个忙并安装 YEdit YAML 编辑器插件

#2楼 票数:26 已采纳

几秒钟后从字面上找到了解决方案。 您必须在“构建”之后删除“发现微服务”:

version: '2'
services:
  discovery-microservice:
    build:
      context: ./discovery-microservice/target/docker
      dockerfile: Dockerfile
    ports:
     - "8761:8761"

您也可以在相对路径的上下文中使用“./”。 :)

#3楼 票数:19

我忘了: version之后

version '2'

#4楼 票数:6

这里有什么问题:

    build: discovery-microservice

你开始一个映射,它有一个由四个空格缩进的键build 该键的值是一个以discovery-microservice开头的标量,可能会继续到下一行,具体取决于它是否具有相同缩进级别key: value

在这样的多行标量中不允许的是你有一个不带引号的:并且在不同的缩进级别。 这正是你所拥有的。

解析器看到context缩进与build不同的级别假设您正在编写一个标量字符串discovery-microservice context ,该discovery-microservice context不能在同一行(作为context )后跟冒号。

除了像您在回答中所做的那样在构建后删除discovery-microservice之外,还有什么可以使这个有效的 YAML(但具有不同的含义,可能对 docker compose 没有意义)是:

services:
  discovery-microservice:
    build: "discovery-microservice
      context: /discovery-microservice/target/docker"

services:
  discovery-microservice:
    build: discovery-microservice
    context: /discovery-microservice/target/docker"

对于 docker-compose 版本 2 文件, build键需要一个映射(而不是上面“解决方案”中的标量),使您的答案成为解决此问题的正确方法。

#5楼 票数:2

提出我的答案是因为虽然我收到了相同的错误消息,但我的解决方案却有所不同。

原始 docker-compose.yml

volumes: mongo:

在尝试了此线程中的所有想法后,我刚刚去了 docker-compose 码头,并意识到卷的结构应如下所示:

volumes:
  mongo:

这就是其他人遇到的情况。

#6楼 票数:2

还要确保您在同一标识中具有上下文和 dockerfile。 我犯了一个错误,被困了几个小时。

我的错误是

错误:yaml.scanner.ScannerError:在“./docker-compose.yml”,第 6 行,第 19 列中不允许映射值

错误:

version : '3'
services:
  test:
    build:
      context: ./test
        dockerfile: Dockerfile.test
    image: kpod/test:2020

对:

version : '3'
services:
  test:
    build:
      context: ./test
      dockerfile: Dockerfile.test
    image: kpod/test:2020

#7楼 票数:1

嗨,对给定答案的进一步更新......这不是特别关于版本:'2.0'行声明

错误:yaml.scanner.ScannerError:此处不允许映射值

意味着存在某种格式错误。

我明白了,这是因为我的 docker-compose 文件中缺少一个选项卡

version: '3.0'
services:
  mysql:
  image: ...

而不是

version: '3.0'
services:
  mysql:
    image: ...

请注意图像行上缺少缩进标签

#8楼 票数:1

如果您正在使用vs code请帮自己一个忙,并通过“RedHat”安装YAML扩展。

#9楼 票数:1

使用 vs code yaml RedHat 扩展,我看到我错了一个缩进:

错误:

version: '3'

services:

  web:
    image: nginx
     ports:
    - 9090:80

  database:
    image: redis

对:

version: '3'

services:

  web:
    image: nginx
    ports:
    - 9090:80

  database:
    image: redis

#10楼 票数:1

我发现缺少一个":"就足以产生上述错误

#11楼 票数:1

我遇到了同样的问题,我认为可能是您的 yaml 文件格式无效。 所以为了解决它,首先我们需要确保我们的yaml文件格式是有效的

下面是您的原始代码片段

version: '2'
services:
  discovery-microservice:
    build: discovery-microservice
      context: /discovery-microservice/target/docker
      dockerfile: Dockerfile
  ports:
   - "8761:8761"

如果我们使用http://www.yamllint.com/检查 yaml 文件,我们会得到如下错误: 在此处输入图片说明

然后我们将其更改如下:

services: 
  discovery-microservice: 
    build: discovery-microservice
    context: /discovery-microservice/target/docker
    dockerfile: Dockerfile
  ports: 
    - "8761:8761"
version: "2"

检查后,我们将得到如下结果:

在此处输入图片说明

#12楼 票数:0

我今天遇到了类似的问题, docker-compose.yml文件中的语法错误导致了同样的错误。

version: '2'
services:
// Add your services here
  discovery-microservice:
    build: discovery-microservice
      context: ./discovery-microservice/target/docker
      dockerfile: Dockerfile
  ports:
   - "8761:8761"

删除此行// Add your services here解决了我的问题

version: '2'
services:
  discovery-microservice:
    build:
      context: ./discovery-microservice/target/docker
      dockerfile: Dockerfile
    ports:
     - "8761:8761"

我希望这可以帮助有类似问题的人。

#13楼 票数:0

另一个可能的罪魁祸首可能是文件末尾的杂散标签,这是我今天了解到的。

#14楼 票数:0

我想要一个映射到外部(主机)服务器上特定路径的卷。 我试着把它放在docker-compose.yml的顶级volumes条目docker-compose.yml 在查看 docker-compose 文件文档后,我意识到这种类型的卷不会出现在那里。 相反,它仅位于容器定义中的volumes条目下。 例如:

version: "3.7"
services:
  web:
    image: my_custom_web_image
    build: ./app
    volumes:
      - ./app/subdir:/usr/src/app/subdir

#15楼 票数:0

通过验证您的 YAML 输入来检查您的空格

我花了1小时才知道。

#16楼 票数:0

1)在定义键后进行映射时,在每个冒号后给一个空格。

2) YAML 文件使用 2 个(两个空格或制表符)缩进。 --> 意思是在每一行之后你需要使用两个制表符,当你在下一行写一个句子时。 我希望现在可以轻松编写任何 YAML 文件。

#17楼 票数:0

所以,还有一个原因! 当您尝试使用 Github 中的 setup.sh 安装 r=Redash 时,脚本会自动获取最新版本的 Redash 并将其放入 docker-compose.yml。 基础 yml 文件在版本名称周围没有单引号 (')! 结果,您收到一条错误消息:

错误:yaml.scanner.ScannerError:“./docker-compose.yml”,第 3 行,第 23 列中的此处不允许映射值您只需在 Redash 版本周围添加单引号:

 version: "2" x-redash-service: &redash-service image: 'redash/redash:8.0.0.b32245'

#18楼 票数:0

检查之间的空间

端口:

- _space_ "8080:8080"

  ask by Skeffington translate from so

未解决问题?本站智能推荐:

1回复

Docker-Compose 文件抛出 yaml.scanner.ScannerError 错误

这是我的 docker-compose 文件的样子 如果我在上面的文件上运行 docker-compose build 我会收到以下错误 错误:compose.cli.main.main:yaml.scanner.ScannerError:在扫描下一个令牌时发现字符“\\t”无法在“./do
2回复

如何在多个组合文件中覆盖docker-compose值?

假设我有3个撰写文件(仅关注mysql服务) docker-compose.yml docker-compose.staging.yml docker-compose.prod.yml 在我的docker compose.yml中,我有基本的mysql东西以及d
1回复

Docker-Compose文件具有yaml.scanner.ScannerError:此处不允许映射值

我的目标是在Docker中为我所有的域在同一主机上的所有docker-compose使用1个桥接网络。 我已经为docker-compose基础架构配置了3个yml文件,并且所有这些都使用了1个外部桥接网络dockerprometheus_back-tier。 一个YAML文件用于反向代
1回复

Docker-compose 数据库表重置

我是 docker 技术的新手。 我在我的项目中使用 docker-compose,每次启动 docker-compose 时,我的数据库表都会重置。 docker-compose.yaml 我从一些来源找到了一个 docker-compose.yaml 文件的例子并对其进行了更改。 我该怎
2回复

如何获得正确的 docker-compose Multiline 环境变量格式?

我使用官方 Wordpress 图像为我的 Wordpress 堆栈制作了一个docker-compose.yaml ,我想在 wp-config.php 文件中自动添加一些自定义常量。 按照官方图片说明,我最终得到了这个: 一切正常,但我的强迫症不能休息,直到我弄清楚为什么生成的 wp-co
1回复

在 docker-compose 中使用构建命令时出现 rpc 错误

我在windwos10中使用Docker桌面。 我有一个带有 2 个容器的 docker compose 文件(一个带有简单的 python 和一个 mysql),当运行 python 应用程序的 docker 文件(多阶段)时,它工作正常,但是当尝试从 docker compose 运行它时,我得
1回复

Docker-Compose :来自具有相同 Dockerfile 的本地镜像的多个服务

我有两个服务,每个都在它的 on 文件夹中:一个文件夹称为employees-service ,另一个文件夹称为clients-service 。 另外,我在同一路径中有一个Dockerfile docker-compose.yaml文件和一个Dockerfile 。 文件夹结构是: d
1回复

带php链接的docker-compose.yml nginx

我在docker-compose.yml文件中尝试过此操作,但无法在nginx服务器中使用php。 我想做的就是让Nginx与php一起工作 希望有人知道如何使其正常工作! 我在主机系统上apache2 installed ,该服务器可提供一些应用程序,但我想将nginx wit