amazon-web-services - 在 AWS CodeBuild 上配置自定义 Docker 镜像需要很长时间

标签 amazon-web-services docker aws-codepipeline aws-codebuild amazon-ecr

我的 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 实例的时间)会相对较长。

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

  1. 使用 CodeBuild 为构建环境提供的镜像,因为这些镜像的最新版本已预先缓存在构建服务器上。
  2. 自定义镜像使用与 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/

相关文章:

amazon-web-services - CloudFormation参数模板错误: Parameter is non alphanumeric

node.js - 与 docker 一起部署 node.js Web 应用程序

docker - 如何在一个阶段 Gitlab CI 中拥有多个可用的 docker 镜像

mysql - 尝试使用 docker 将 Golang 连接到 mssql 服务器时连接被拒绝

amazon-web-services - AWS Cloudformation 模板配置无效

amazon-web-services - 具有无服务器框架的 AWS codeBuild/codePipeline

amazon-web-services - ECS任务定义中容器间的通信

amazon-web-services - AWS 上的 Kubernetes 1.3.x 只有一个工作 Minion

node.js - 如何使用 aws ses 在电子邮件 header 中添加姓名

docker - AWS 代码管道 : works "by hand" but trouble getting terraform to set up stages