docker-compose.yml内容-如何避免出现“必须是映射而不是字符串”错误消息?

时间:2018-08-21 11:52:20

标签: docker docker-compose

问题:以下内容返回“服务'图像'必须是映射而不是字符串”。 我尝试使用YAML Parser(http://yaml-online-parser.appspot.com/),但未返回任何错误。

version: 
     "2.0"

services:

 blog:

 image: 
  abc/defg
 environment:
  APPLICATION_SECRET:
   82xxxxxxx

  ports: -"9000:9000"

工作版本:

version: "2.1"
services:
 blog:
  image:  abc/defg
  environment:
   APPLICATION_SECRET:
    82xxx
  ports: 
   - "9000:9000"
networks:
  default:
    external:
      name: nat

1 个答案:

答案 0 :(得分:1)

如果您查看从online parser获得的Python输出,则可以看到

'ports': '-"9000:9000"'

看起来不像端口号列表。

序列元素由一个破折号和一个空格表示,如果您在ports后的破折号后输入该空格,则该空格:

ports: - "9000:9000"

您实际上确实会出错,因为作为值的块序列不能在键之后开始,而必须在它们自己的行上开始:

ports:
- "9000:9000"

尽管序列中的元素必须缩进,但连字符不一定必须缩进,只需将其与元素分隔至少一个空格即可。