Kār*_*els 6 amazon-web-services amazon-ecs amazon-elastic-beanstalk
我们在工作流程中使用 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
Run Code Online (Sandbox Code Playgroud)
在 Dockerrun.aws.json 下,containerDefinitions我们有(#### 是 ECS 中应用程序 ID 和存储库名称的正确值)
{
"essential": true,
"image": "####.dkr.ecr.us-west-2.amazonaws.com/####:%BUILD_NUM%",
"memory": 2048,
"name": "web-container",
"portMappings": [
{
"containerPort": 80,
"hostPort": 80
}
]
}
Run Code Online (Sandbox Code Playgroud)
登录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.
Run Code Online (Sandbox Code Playgroud)
我们已经确保图像构建正确(我们可以将其上传到 CircleCi 服务器,启动容器并运行 phpunit 测试)。项目根目录中有 .elasticbeanstalk 文件夹,其中包含有效config.yml文件。
已经尝试和谷歌搜索了两天,但没有运气。将不胜感激任何帮助或指导来理解此错误消息的含义。如果需要任何其他详细信息,我会提供,尽管询问。
}当我的一个变量末尾有一个额外的值时,我使用 terraform 得到了这个。
您可能会尝试做的是在 docker 中构造镜像名称,并回显它以进行审核。
将您的更新Dockerrun.aws.json为:
...
"image": "%IMAGE_NAME",
...
Run Code Online (Sandbox Code Playgroud)
然后更新你的圈子构建如下:
- run:
name: Deploy to Elastic Beanstalk
command: |
echo "Commit sha: ${CIRCLE_SHA1}"
if [ "${CIRCLE_BRANCH}" == "docker" ]; then
IMAGE_NAME=####.dkr.ecr.us-west-2.amazonaws.com/####:${CIRCLE_SHA1}
echo "IMAGE_NAME is $IMAGE_NAME"
sed -i'' -e "s/%IMAGE_NAME%/${IMAGE_NAME}/g" Dockerrun.aws.json
eb deploy sales-web -l $CIRCLE_SHA1
fi
Run Code Online (Sandbox Code Playgroud)
然后,如果失败,请在构建期间复制 IMAGE_NAME 输出,并尝试使用以下命令自行拉取映像
$(aws ecr get-login --no-include-email --region us-west-2)
docker pull <IMAGE_NAME>
Run Code Online (Sandbox Code Playgroud)
我敢打赌它会出现一个错误,您可以对其进行故障排除。
| 归档时间: |
|
| 查看次数: |
14292 次 |
| 最近记录: |