在ecs-cli上运行docker compose时,如何解决“无法解组!! str`image:j ...`到config.RawService”错误?

时间:2019-01-30 18:51:39

标签: docker-compose aws-cli amazon-ecs

我正在按照此AWS document为我的项目设置容器化部署。我已设置AWS CLI来遵循文档中的步骤。我已经成功构建了Jenkins和Jenkins Docker Volume映像并将其推送到我在ECR上的仓库中。我安装了ECS-CLI来运行docker compose文件,但是我收到“ yaml:解组错误:\ n第2行:无法解组!! str图像:j ...进入config.RawService” 错误运行docker compose文件。

这是我第一次使用docker compose,当我研究时发现这可能是版本问题。 ECS-CLI现在支持docker compose的所有三个版本,因此它不是版本问题。

命令: ECS-CLI服务撰写向上

docker-compose.yml (jenkins是文档中的jenkins主映像):

jenkins:
  image:jenkins
  cpu_shares:100
  mem_limit:2000
  ports:"8080:8080","50000:50000" 
  volumes_from:jenkins_dv
jenkins_dv:
  image:jenkins_dv
  cpu_shares:100
  mem_limit:500

实际结果

ERRO [0000]无法解析项目awsinfra的配置:yaml:解组错误:

第2行:无法将!! str image:j...解组到config.RawService

第8行:无法将!! str image:j...解组到config.RawService

ERRO [0000]无法打开ECS撰写项目error =“ yaml:解组错误:\ n第2行:无法解组!! str image:j...进入config.RawService \ n第8行:无法解组!! str image:j...进入config.RawService”

FATA [0000]无法创建和读取ECS撰写项目error =“ yaml:解组错误:\ n第2行:无法解组!! str image:j...进入config.RawService \ n第8行:无法解组! !STR image:j...入config.RawService“

1 个答案:

答案 0 :(得分:1)

您所拥有的是有效的YAML,但是每个键jenkinsjenkins_dv的值都是多行纯标量字符串(纯文本,如:无引号)。而且docker-compose不知道该如何处理这些字符串,它需要一个映射(Python dict

您想要拥有的值是映射,为此,您至少需要在键和值之间使用一个值指示符。 YAML中的值指示符是冒号(':'),后跟空格(即换行符,其后跟jenkins之后的指示符,或空格。

尝试:

jenkins:
  image: jenkins
  cpu_shares: 100
  mem_limit: 2000
  ports: ["8080:8080", "50000:50000"]
  volumes_from: jenkins_dv
jenkins_dv:
  image: jenkins_dv
  cpu_shares: 100
  mem_limit: 500

IIRC ports的值必须是一个序列,因此我将其值更改为流样式序列。严格按此顺序输入分隔符(,)后的空格不是必须的,但是使IMHO更具可读性。您也可以这样做:

  ports: 
  - "8080:8080"
  - "50000:50000"