Docker镜像构build为AWS CodePipeline步骤
我能够设置github和AWS CodePipeline之间的集成,所以现在我的代码通过lambda函数的推送事件后上传到S3。 这工作得很好。
在S3上有一个新的源代码的ZIP触发一个pipe道,它build立的代码。 没关系。 现在我想为这个项目build立一个docker镜像。
第一个问题是你不能混合项目(nodejs)构build和docker构build。 这很好,很有意义。 下一个问题是你不能有docker版本的另一个buildspec.yml。 您已经手动指定了构build命令,可以,这是一个解决方法。
但是,最大的问题或缺乏我的理解,是如何把dockerbuild设作为pipe道的一部分? 首先构build项目,下一步构buildDocker镜像。 两个独立的AWS CodeBuild。
事情是,pipe道构build步骤必须在输出上产生工件。 但是docker build不会产生任何文件,并且看起来docker build之后的最后的docker push是没有被pipe道服务限定为工件的。
有没有办法如何做到这一点?
谢谢
有点晚了,但希望对某人有帮助。 您应该将docker镜像作为您的post_build阶段命令的一部分发布。 这是一个buildspec.yml的例子:
version: 0.1 phases: pre_build: commands: - echo Logging in to Amazon ECR... - $(aws ecr get-login --region $AWS_REGION) build: commands: - echo Build started on `date` - echo Building the Docker image... - docker build -t $IMAGE . - "docker tag $IMAGE $REPO/$IMAGE:${CODEBUILD_BUILD_ID##*:}" post_build: commands: - echo Build completed on `date` - echo Pushing the Docker image... - "docker push $REPO/$IMAGE:${CODEBUILD_BUILD_ID##*:}" - "echo {\\\"image\\\":\\\"$REPO/$IMAGE:${CODEBUILD_BUILD_ID##*:}\\\"} > image.json" artifacts: files: - 'image.json'
正如您所看到的,CodeBuild项目需要很less的参数 – AWS_REGION
, REPO
和IMAGE
并在AWS ECR上发布图像(但您可以使用您所select的registry)。 它还使用现有的CODEBUILD_BUILD_ID
环境variables为图像标签提取dynamic值。 在图像被推入后,它会创build带有图像完整path的json文件,并将其作为CodePipeline要使用的工件发布。
为此,CodeBuild项目“环境图像”应该是“docker”types,“priviledged”标志被激活。 在pipe道中创buildCodeBuild项目时,还可以指定使用上述buildspec文件的环境variables。
这里有一个很好的教程:
不便之处,敬请原谅。 减less限制是我们的路线图。 同时,为了使用CodeBuild动作,可以使用一个虚拟文件作为输出工件。
- 如何在Docker中configurationCouchDB身份validation?
- Amazon Elastic Beanstalk中的Docker部署错误 – Docker容器意外退出
- AWS Elasticbeanstalk Docker错误部署
- 运行在Docker容器中的Node.js进程在内存不足时不会退出或抛出
- AWS弹性beanstalk上的Docker应用程序上载失败
- 通过GitLabpipe道将Docker容器部署到EC2容器服务时出错
- 运行多容器Docker的AWS BeanStalk环境无法启动Health:Severe
- 在CentOS7上使用Debian库运行MySQL docker镜像
- 弹性beanstalk泊坞窗应用程序不部署时更新