当前位置: 首页 > 知识库问答 >
问题:

Docker镜像构建为AWS CodePipeline步骤

祁杰
2023-03-14

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

S3上带有源代码的新ZIP触发了一个管道,该管道生成代码。那很好。现在我还想为这个项目建立一个docker形象。

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

然而,最大的问题,或者说缺乏我的理解,是如何将docker构建作为管道的一部分?首先构建步骤构建项目,下一个构建步骤构建docker映像。两个独立的AWS CodeBuilds。

问题是管道构建步骤必须在输出上生成工件。但是docker构建不会生成任何文件,而且docker构建之后的最终docker推送看起来不符合管道服务的工件条件。

有没有办法怎么做?

谢谢

共有2个答案

尉迟招
2023-03-14

很抱歉给您带来不便。减少限制是我们的路线图。同时,为了使用CodeBuild操作,您可以使用一个虚拟文件作为输出工件。

孟正志
2023-03-14

有点晚了,但希望对某人有帮助。您应该将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_REGIONREPOIMAGE并在AWSECR上发布图像(但是您可以使用您选择的注册表)。它还使用现有的CODEBUILD_BUILD_ID环境变量为图像标记提取动态值。推送图像后,它会创建带有图像完整路径的json文件,并将其发布为CodePipeline使用的工件。

要做到这一点,CodeBuild项目“环境映像”应该是“docker”类型的,并且激活了“特权”标志。在管道中创建CodeBuild项目时,您还可以指定上面构建规范文件中使用的环境变量。

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

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

 类似资料:
  • 本文向大家介绍Docker镜像构建原理解析(不装docker也能构建镜像),包括了Docker镜像构建原理解析(不装docker也能构建镜像)的使用技巧和注意事项,需要的朋友参考一下 在devops流程里面 构建镜像是一个非常重要的过程,一般构建镜像是写dockerfile文件然后通过docker client来构建的image。 docker client 会先检查本地有没有image,如果没有

  • 本文向大家介绍Maven插件构建Docker镜像的实现步骤,包括了Maven插件构建Docker镜像的实现步骤的使用技巧和注意事项,需要的朋友参考一下 背景 微服务架构下,微服务在带来良好的设计和架构理念的同时,也带来了运维上的额外复杂性,尤其是在服务部署和服务监控上。单体应用是集中式的,就一个单体跑在一起,部署和管理的时候非常简单,而微服务是一个网状分布的,有很多服务需要维护和管理,对它进行部署

  • 本文向大家介绍通过Dockerfile构建Docker镜像的方法步骤,包括了通过Dockerfile构建Docker镜像的方法步骤的使用技巧和注意事项,需要的朋友参考一下 Dockerfile是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建. Dockerfile支持Shell类的行尾添加"\"的命令换行方式,以及

  • 这是我编写的Dockerfile文件,但是构建镜像的时候发现没有执行npm install,自然也不会有dist文件,不知道是哪里写的有问题,请教一下大家

  • 如何从coreos iso映像生成docker base映像?我尝试将iso映像转换为tar文件,但失败了。docker导入。。。只是为了。tar存档文件?谢谢

  • 我正在尝试构建一个安装了plv8扩展的PostgreSql 9.6 docker映像。下面是我的Dockerfile。 生成的图像大小为3.45 GB,而Docker hub的原始图像大小为235 MB。你知道为什么产生的图像尺寸这么大吗?如何缩小其尺寸?我试图使用此链接减小其大小,但不幸的是,docker导入/导出丢失了元数据。 更新: 我试图将所有RUN语句合并为一个语句。 新的大小是3.11