首页 > 解决方案 > 在 AWS CodeBuild 上预置自定义 Docker 映像需要很长时间

问题描述

我的 Dockerfile:

FROM mcr.microsoft.com/dotnet/framework/sdk:4.8-windowsservercore-ltsc2016
COPY AWSCLIV2.msi .
RUN Start-Process msiexec.exe -Wait -ArgumentList '/I AWSCLIV2.msi /quiet /qn /norestart /log awscli.log'
RUN rm AWSCLIV2.msi

我的 CodeBuild 环境需要能够构建 .NET Framework 项目以及使用 AWS CLI。由于限制,我只能有一个 CodeBuild 阶段。我将使用上述 Dockerfile 创建的 docker 映像推送到 ECR,并将我的 CodeBuild 环境设置为使用该映像。但是,配置大约需要 10 分钟。

CodeBuild 提供仅持续约 15 分钟的缓存,这对于更不频繁的构建没有帮助。我还发现了这个解决方案,其他人链接到https://github.com/aws/aws-codebuild-docker-images/issues/26#issuecomment-370177343但我不确定它如何应用于 Windows 容器。

如果有人对减少配置时间有任何指示,我将不胜感激。

标签: amazon-web-servicesdockeraws-codepipelineaws-codebuildamazon-ecr

解决方案


Windows 映像很大,因此包括将自定义映像下拉到 CodeBuild 实例的时间在内的配置时间会相对较长。

有两种方法可以提供帮助:

  1. 为构建环境使用 CodeBuild 提供的映像,因为这些映像的最新版本已预先缓存在构建服务器上。
  2. 自定义镜像使用与 CodeBuild 镜像相同的基础层,这样基础层可以重复使用,不会产生下载时间。例如:

    • 对于 Microsoft Windows,请使用具有 microsoft/windowsservercore:10.0.x 版本的容器操作系统的 Windows 容器(例如,microsoft/windowsservercore:10.0.14393.2125)。关联

推荐阅读