Подготовка пользовательского образа Docker в AWS CodeBuild занимает очень много времени

Мой 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. Из-за ограничений у меня может быть только один этап CodeBuild. Я нажимаю на ECR образ докера, созданный с помощью указанного выше файла Docker, и настраиваю среду CodeBuild для использования этого образа. Однако подготовка занимает ~ 10 минут.

CodeBuild обеспечивает кеширование, которое длится всего ~ 15 минут, что бесполезно для более редких сборок. Я также нашел это решение, которое другие связали с https://github.com/aws/aws-codebuild-docker-images/issues/26#issuecomment-370177343, но я не уверен, как это можно применить к контейнерам Windows.

Если у кого-то есть указатели на уменьшение времени подготовки, я был бы очень признателен.


person Do Yeon Kim    schedule 26.05.2020    source источник


Ответы (1)


Образы Windows имеют большой размер, поэтому время подготовки, которое включает время загрузки настраиваемого образа в экземпляр CodeBuild, будет относительно большим.

Есть два подхода, которые могут помочь:

  1. Используйте образы, предоставленные CodeBuild, для среды сборки, поскольку последняя версия этих образов предварительно кэшируется на серверах сборки.
  2. Используйте базовый слой для настраиваемого изображения так же, как и для изображения CodeBuild, чтобы можно было повторно использовать базовый уровень и не требовалось времени на загрузку. например.:

    • For Microsoft Windows, use a Windows container with a container OS that is version microsoft/windowsservercore:10.0.x (for example, microsoft/windowsservercore:10.0.14393.2125). Link
person shariqmaws    schedule 27.05.2020