我的 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,请使用容器操作系统版本为 microsoft/windowsservercore:10.0.x(例如 microsoft/windowsservercore:10.0.14393.2125)的 Windows 容器。 Link
关于amazon-web-services - 在 AWS CodeBuild 上配置自定义 Docker 镜像需要很长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62025740/