【发布时间】:2018-08-12 03:32:16
【问题描述】:
我们在工作流程中使用 CircleCi,以便将 PHP 站点部署为 ElasticBeanstalk 服务器上的 docker 映像。
CircleCi 中的build 工作定义如下:
deploy:
docker:
- image: docker:17.05.0-ce-git
steps:
- checkout
- setup_remote_docker
- run:
name: Install dependencies
command: |
apk add --no-cache \
py-pip=9.0.0-r1
pip install \
awscli \
awsebcli --upgrade
- run:
name: Login to AWS
command: |
login="$(aws ecr get-login --no-include-email --region us-west-2)"
${login}
- run:
name: Deploy to Elastic Beanstalk
command: |
echo "Commit sha: ${CIRCLE_SHA1}"
if [ "${CIRCLE_BRANCH}" == "docker" ]; then
sed -i'' -e "s/%BUILD_NUM%/${CIRCLE_SHA1}/g" Dockerrun.aws.json
eb deploy sales-web -l $CIRCLE_SHA1
fi
在containerDefinitions 下的 Dockerrun.aws.json 中,我们有(#### 是 ECS 中应用程序 ID 和存储库名称的正确值)
{
"essential": true,
"image": "####.dkr.ecr.us-west-2.amazonaws.com/####:%BUILD_NUM%",
"memory": 2048,
"name": "web-container",
"portMappings": [
{
"containerPort": 80,
"hostPort": 80
}
]
}
登录AWS步骤成功并上传图片,环境sales-web开始更新但失败
2018-03-02 16:10:41 UTC+0200 ERROR Failed to deploy application.
2018-03-02 16:10:41 UTC+0200 ERROR Service:AmazonECS, Code:ClientException, Message:Container.image contains invalid characters., Class:com.amazonaws.services.ecs.model.ClientException
2018-03-02 16:09:52 UTC+0200 INFO Environment update is starting.
我们已经确保镜像构建正确(我们可以将它上传到 CircleCi 服务器,启动容器并运行 phpunit 测试)。项目根目录下有.elasticbeanstalk文件夹,有效config.yml文件。
已经尝试并在 Google 上搜索了 2 天,但没有成功。 将感谢任何帮助或指导以了解此错误消息的含义。如果需要任何其他详细信息,我会提供,请尽管询问。
【问题讨论】:
-
你能检查“####.dkr.ecr.us-west-2.amazonaws.com/####:%BUILD_NUM%”是否有任何非ASCII?例如,虽然冒号看起来像冒号,但它真的是冒号吗?在从 MS Word/Outlook 等工具复制文本之前,我遇到过这个问题。
-
我对 Cloudformation 也有同样的问题。我忘了正确设置变量替换。所以请注意缺少这样的“$”符号:
Image: !Sub "${EcrUrl}/${EcrRepository}:{EcrTag}"
标签: amazon-web-services amazon-elastic-beanstalk amazon-ecs