![](/img/trans.png)
[英]Creating custom build image for AWS CodeBuild with docker-compose
[英]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.