gpt4 book ai didi

docker - 在 Windows Docker 容器上安装 MS Build Tools 失败

转载 作者:行者123 更新时间:2023-12-02 17:59:33 26 4
gpt4 key购买 nike

我正在尝试为 CI 管道设置 Windows 容器。
我的项目使用 C++ 和 CMake,所以我使用的是 Microsoft Build Tools 安装程序。

注意:我不打算在我的项目中使用 .NET 框架的任何部分

不幸的是,在我的 Docker 容器中安装 MS Build Tools 失败,退出代码为 5003,并且没有错误消息。

我一直没能找到这个返回码的解释。我想知道是否有人可以告诉我我做错了什么?

我的 Dockerfile 看起来像这样:

FROM microsoft/windowsservercore:10.0.14393.1480

ADD https://aka.ms/vs/15/release/vs_buildtools.exe C:\\tmp\\vs-build-tools.exe

RUN C:\\tmp\\vs-build-tools.exe --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended --quiet --passive --norestart --wait --nocache

RUN powershell -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))"
RUN %ALLUSERSPROFILE%\chocolatey\bin\choco.exe install -y git

ENTRYPOINT C:\BuildTools\Common7\Tools\VsDevCmd.bat &&
CMD ["powershell.exe", "-NoLogo", "-ExecutionPolicy", "Bypass"]

我正在用这个批处理脚本构建容器(用户名已被替换):
docker image rm someusername/cmake-msvc
docker build -t someusername/cmake-msvc -m 8g .
docker push someusername/cmake-msvc

我读过 these Windows containers require a large amount of storage space ,所以我通过设置 storage-opts 增加了可用空间:
"storage-opts": [
"size=120G"
]

这是我在构建时得到的控制台输出,在构建崩溃之前需要一段时间(我没有计时,但我猜它在 20 到 40 分钟之间):
docker build -t someusername/cmake-msvc -m 8g .
Sending build context to Docker daemon 1.29MB
Step 1/7 : FROM microsoft/windowsservercore:10.0.14393.1480
---> 2c42a1b4dea8
Step 2/7 : ADD https://aka.ms/vs/15/release/vs_buildtools.exe C:\\tmp\\vs-build-tools.exe
Downloading [==================================================>] 1.286MB/1.286MB

---> 1891bae28aa1
Step 3/7 : RUN C:\\tmp\\vs-build-tools.exe --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended --quiet --passive --norestart --wait --nocache
---> Running in aa6061b7134e
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\HelpFile\1028\help.html...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\HelpFile\2052\help.html...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\HelpFile\1029\help.html...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\HelpFile\1036\help.html...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\HelpFile\3082\help.html...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\HelpFile\1040\help.html...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\HelpFile\1031\help.html...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\HelpFile\1033\help.html...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\HelpFile\1055\help.html...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\HelpFile\1046\help.html...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\HelpFile\1042\help.html...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\HelpFile\1045\help.html...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\HelpFile\1041\help.html...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\HelpFile\1049\help.html...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\vs_setup_bootstrapper.exe...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\Microsoft.Diagnostics.Tracing.EventSource.dll...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\Microsoft.VisualStudio.RemoteControl.dll...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\Microsoft.VisualStudio.Setup.Common.dll...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\Microsoft.VisualStudio.Setup.Configuration.Interop.dll...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\Microsoft.VisualStudio.Setup.dll...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\Microsoft.VisualStudio.Setup.Download.dll...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\Microsoft.VisualStudio.Setup.Engine.dll...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\Microsoft.VisualStudio.Telemetry.dll...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\Microsoft.VisualStudio.Utilities.Internal.dll...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\Newtonsoft.Json.dll...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\zh-Hans\vs_setup_bootstrapper.resources.dll...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\zh-Hant\vs_setup_bootstrapper.resources.dll...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\cs\vs_setup_bootstrapper.resources.dll...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\pt-BR\vs_setup_bootstrapper.resources.dll...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\tr\vs_setup_bootstrapper.resources.dll...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\es\vs_setup_bootstrapper.resources.dll...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\de\vs_setup_bootstrapper.resources.dll...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\fr\vs_setup_bootstrapper.resources.dll...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\it\vs_setup_bootstrapper.resources.dll...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\pl\vs_setup_bootstrapper.resources.dll...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\ko\vs_setup_bootstrapper.resources.dll...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\ja\vs_setup_bootstrapper.resources.dll...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\ru\vs_setup_bootstrapper.resources.dll...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\vs_setup_bootstrapper.config...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\vs_setup_bootstrapper.exe.config...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\detection.json...
Preparing: C:\Users\ContainerAdministrator\AppData\Local\Temp\e86ca78527dcfbd3cf\vs_bootstrapper_d15\vs_setup_bootstrapper.json...
The command 'cmd /S /C C:\\tmp\\vs-build-tools.exe --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended --quiet --passive --norestart --wait --nocache' returned a non-zero code: 5003

我注意到 this Github user正在遇到类似的问题,尽管尚未给出答案。
我也读过 this post在 MS 开发人员社区上,人们似乎建议使用旧版或新版的 windosservercore 镜像( This blog post 似乎给出了类似的建议)。这就是我使用 10.0.14393.1480 的原因,可惜无济于事。

最佳答案

我一直将非零代码 1 作为退出代码,所有内容都与您拥有的非常相似,这让我感到非常困惑。
帮助我的是更改对应于 RUN C:\\tmp\\vs-build-tools.exe --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended --quiet --passive --norestart --wait --nocache 的行进入:

RUN C:\\tmp\\vs-build-tools.exe --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended --quiet --passive --norestart --wait --nocache || exit 0
即使失败,它也会报告退出代码 0。虽然我完全意识到这通常是一个非常糟糕的主意,但当我运行 docker run -it build-container cmd 时我看到我的构建工具已正确安装。
编辑:
您可能还想运行它,以安装 VS2017 未安装的任何 SDK 包(您可以从 Microsoft 网站下载 SDK): RUN powershell -NoProfile -ExecutionPolicy Bypass -Command Start-Process -FilePath "C:\tmp\winsdksetup_17763.exe" -ArgumentList '/Quiet /NoRestart' -Wait否则我也可以推荐 Microsoft here 描述的方法从安装收集日志。稍后可以将日志提交给 Microsoft 以获得支持。
一个可能的解决方法是通过 Chocolatey 安装构建工具。我以前一直在使用以下内容,我相信您可以找到类似的软件包来满足您的需求:
RUN choco install -y visualstudio2017community --version 15.9.7.0
RUN choco install -y visualstudio2017-workload-nativedesktop
RUN choco install -y visualcpp-build-tools

关于docker - 在 Windows Docker 容器上安装 MS Build Tools 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55697044/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com