gpt4 book ai didi

amazon-web-services - Docker 镜像构建为 AWS CodePipeline 步骤

转载 作者:行者123 更新时间:2023-12-04 08:06:13 24 4
gpt4 key购买 nike

我能够在 github 和 AWS CodePipeline 之间设置集成,所以现在我的代码在一个 lambda 函数的推送事件之后上传到 S3。这很好用。

S3 上带有源代码的新 ZIP 会触发构建代码的管道。没关系。现在我还想为该项目构建一个 docker 镜像。

第一个问题是你不能混合一个项目(nodejs)构建和docker构建。很好,有道理。下一个问题是您不能为 docker 构建使用另一个 buildspec.yml。您已经手动指定了构建命令,好的,这是一种解决方法。

但是,最大的问题,或者说我缺乏理解,是如何将 docker build 作为管道的一部分?第一个构建步骤构建项目,下一个构建步骤构建 docker 镜像。两个独立的 AWS CodeBuild。

问题是管道构建步骤必须在输出上生成工件。但是 docker build 不会生成任何文件,并且看起来 docker build 之后的最终 docker push 没有被管道服务限定为工件。

有没有办法做到这一点?

谢谢

最佳答案

有点晚了,但希望会对某人有所帮助。您应该将 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 项目需要几个参数 - AWS_REGION , REPOIMAGE并在 AWS ECR 上发布镜像(但您可以使用您选择的注册表)。它还使用现有的 CODEBUILD_BUILD_ID用于提取图像标签动态值的环境变量。推送镜像后,它会使用镜像的完整路径创建 json 文件,并将其发布为供 CodePipeline 使用的工件。

为此,CodeBuild 项目“环境镜像”的类型应为“docker”,并激活“priviledged”标志。在您的管道中创建 CodeBuild 项目时,您还可以指定使用上述 buildspec 文件的环境变量。

这里有一个关于这个主题的很好的教程:

http://queirozf.com/entries/using-aws-codepipeline-to-automatically-build-and-deploy-your-app-stored-on-github-as-a-docker-based-beanstalk-application

关于amazon-web-services - Docker 镜像构建为 AWS CodePipeline 步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41191166/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com