Ske*_*ton 38 yaml docker dockerfile docker-compose
compose.yml
文件,看起来像这样:
version: '2'
services:
discovery-microservice:
build: discovery-microservice
context: /discovery-microservice/target/docker
dockerfile: Dockerfile
ports:
- "8761:8761"
Run Code Online (Sandbox Code Playgroud)
当我执行它时,我收到以下错误:
yaml.scanner.ScannerError: mapping values are not allowed here
in "C:\...\docker-compose.yml", line 5, column 14
Run Code Online (Sandbox Code Playgroud)
从我看来,格式没有任何问题,例如缺少空格.我的总体目标是指定开发模式docker-compose文件,将其指向不同模块的目标目录.
我在这做错了什么?
vir*_*ous 75
好吧,我浪费了大约3个小时来调试类似的问题.
如果你们得到以下错误
ERROR: yaml.scanner.ScannerError: mapping values are not allowed here
in ".\docker-compose.yml", line 2, column 9
Run Code Online (Sandbox Code Playgroud)
因为你需要一个空间
版本:'3'< - 这是错误的
版本:'3'< - 这是正确的.
另外,如果您正在使用eclipse,请帮自己一个忙,并安装YEdit YAML编辑器插件
Ske*_*ton 17
几秒后逐字逐句地找到解决方案.您必须在"构建"之后删除"discovery-microservice":
version: '2'
services:
discovery-microservice:
build:
context: ./discovery-microservice/target/docker
dockerfile: Dockerfile
ports:
- "8761:8761"
Run Code Online (Sandbox Code Playgroud)
您也可以在相关路径的上下文中使用"./".:)
这有什么问题:
build: discovery-microservice
Run Code Online (Sandbox Code Playgroud)
你启动一个映射,其中有一个键build
缩进四个空格.该密钥的值是与开始标量discovery-microservice
和可能继续到下一行,这取决于是否具有key: value
一对在相同缩进级别或不
在这样的多行标量中不允许的是你有一个不带引号:
并且具有不同缩进级别的那个.这正是你所拥有的.
解析器context
在不同的级别缩进,而不是build
假设您正在编写一个标量字符串discovery-microservice context
,该字符串不能通过context
冒号在同一行(as )上跟踪.
除了discovery-microservice
在你的答案中删除之后,还有什么能使这个有效的YAML(但具有不同的含义,对于docker compose可能没有意义)是:
services:
discovery-microservice:
build: "discovery-microservice
context: /discovery-microservice/target/docker"
Run Code Online (Sandbox Code Playgroud)
和
services:
discovery-microservice:
build: discovery-microservice
context: /discovery-microservice/target/docker"
Run Code Online (Sandbox Code Playgroud)
对于docker-compose版本2文件,该build
键需要映射(而不是上面"解决方案"中的标量),使您的答案成为解决此问题的正确方法.
我遇到了同样的问题,我认为这可能是您的 yaml 文件格式无效。所以为了解决这个问题,首先我们需要确保我们的yaml文件格式是有效的
下面是你的原始代码片段
version: '2'
services:
discovery-microservice:
build: discovery-microservice
context: /discovery-microservice/target/docker
dockerfile: Dockerfile
ports:
- "8761:8761"
Run Code Online (Sandbox Code Playgroud)
如果我们使用http://www.yamlint.com/检查yaml文件,我们会得到如下错误:
然后我们将其更改如下:
services:
discovery-microservice:
build: discovery-microservice
context: /discovery-microservice/target/docker
dockerfile: Dockerfile
ports:
- "8761:8761"
version: "2"
Run Code Online (Sandbox Code Playgroud)
检查后,我们会得到如下结果:
归档时间: |
|
查看次数: |
48953 次 |
最近记录: |