我正在按照此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“
答案 0 :(得分:1)
您所拥有的是有效的YAML,但是每个键jenkins
和jenkins_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"