簡體   English   中英

如何從 .NET 框架映像構建自定義 AWS CodeBuild 映像

[英]How to build a custom AWS CodeBuild image from a .NET Framework image

我正在嘗試查看是否可以為舊的 .NET 框架應用程序創建自定義 AWS CodeBuild 構建映像。

我可以直接在構建項目中提取和使用mcr.microsoft.com/dotnet/framework/sdk:4.8 ,但是當我嘗試from mcr.microsoft.com/dotnet/framework/sdk:4.8 dockerfile推送時它到 ECR 構建項目會引發錯誤:

BUILD_CONTAINER_UNABLE_TO_PULL_IMAGE: Unable to pull customer's container image. CannotPullContainerError: a Windows version 10.0.19042-based image is incompatible with a 10.0.17763 host

我的 Windows 版本是 10.0.19042,所以我假設問題是我正在構建圖像並自己推送它。

有沒有辦法使用兼容的基本 Windows 版本創建圖像?

我能夠通過利用 Docker 清單來解決這個問題。

docker manifest inspect mcr.microsoft.com/dotnet/framework/sdk:4.8

我查找了 CodeBuild 使用的 Windows 的版本,10.0.17763.2928(Windows Server 2019),然后使用了正確版本的 hash。

FROM mcr.microsoft.com/dotnet/framework/sdk:4.8@sha256:fa53215891bfa80f70d5266f08942dd6e83a7b61f3701b700b19b4aba2dc1060

然后,我將我的 CDK codebuild.WindowsBuildImage.from_asset()道具指向ecr_assets.DockerImageAssetProps()指向包含 Dockerfile 的文件夾,其中僅包含上述 FROM 語句。

# Declare a new CodeBuild project
build_project = codebuild.PipelineProject(self, "Build", 
    environment = codebuild.BuildEnvironment(
        build_image=codebuild.WindowsBuildImage.from_asset(self,
            "CustomBuildImage",
            props=ecr_assets.DockerImageAssetProps(
                directory="App/build_image"
            ),
            image_type=codebuild.WindowsImageType.SERVER_2019
        )
    ),
    environment_variables = {
        'PACKAGE_BUCKET': codebuild.BuildEnvironmentVariable(value = artifacts_bucket.bucket_name),
    },
)

最大的缺點是容器在開始執行構建規范之前需要大約 5 分鍾的時間來加載,因為 Windows...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM