我的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容器。

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

最佳答案

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

有两种方法可以帮助您:

  • 使用CodeBuild为构建环境提供的镜像,因为这些镜像的最新版本已预先缓存在构建服务器上。
  • 将自定义图像的基础层与CodeBuild图像相同,以便可以重复使用该基础层,并且不会浪费下载时间。例如。:
  • 对于Microsoft Windows,请使用Windows容器以及版本为microsoft / windowsservercore:10.0.x的容器OS(例如,microsoft / windowsservercore:10.0.14393.2125)。 Link
  • 关于amazon-web-services - 在AWS CodeBuild上配置自定义Docker镜像需要很长时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62025740/

    10-09 04:52