Last active
April 1, 2025 16:44
-
-
Save NazikMGE/8c0c8c80da622ba7ca8b7068bfca6248 to your computer and use it in GitHub Desktop.
Dockerfile for portable MSVC compiler (windows/servercore) with Conan(2.14.0), CMake (4.0.0), Ninja (1.12.1), Python (3.12.2)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# escape=` | |
FROM mcr.microsoft.com/windows/servercore:ltsc2019 AS builder | |
SHELL ["cmd", "/S", "/C"] | |
RUN mkdir C:\TEMP | |
ADD https://aka.ms/vs/17/release/vs_buildtools.exe C:\TEMP\vs_buildtools.exe | |
RUN C:\TEMP\vs_buildtools.exe --quiet --wait --norestart ` | |
--add Microsoft.VisualStudio.Workload.VCTools --includeRecommended ` | |
--installPath C:\BuildTools && ` | |
del /q C:\TEMP\*.* | |
RUN mkdir C:\Archives && ` | |
tar -cf C:\Archives\buildtools.tar ` | |
"C:\BuildTools\VC\Tools\MSVC\14.43.34808\bin\Hostx64\x64" ` | |
"C:\BuildTools\VC\Tools\MSVC\14.43.34808\crt" ` | |
"C:\BuildTools\VC\Tools\MSVC\14.43.34808\lib\x64" ` | |
"C:\BuildTools\VC\Tools\MSVC\14.43.34808\include" ` | |
"C:\BuildTools\VC\Auxiliary\Build\vcvars64.bat" ` | |
"C:\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" ` | |
"C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64" ` | |
"C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0" ` | |
"C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\ucrt\x64" ` | |
"C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64" ` | |
"C:\Program Files (x86)\Windows Kits\10\Redist\D3D" ` | |
"C:\Program Files (x86)\Windows Kits\10\Redist\MBN" ` | |
"C:\Program Files (x86)\Windows Kits\10\Source\10.0.22621.0" && ` | |
mkdir C:\TEMP\Extract && ` | |
tar -xf C:\Archives\buildtools.tar -C C:\TEMP\Extract && ` | |
mkdir C:\Prepared && ` | |
move "C:\TEMP\Extract\BuildTools\VC" "C:\Prepared\VC" && ` | |
mkdir "C:\Prepared\WindowsKits\10" && ` | |
move "C:\TEMP\Extract\Program Files (x86)\Windows Kits\10\bin" "C:\Prepared\WindowsKits\10\bin" && ` | |
move "C:\TEMP\Extract\Program Files (x86)\Windows Kits\10\Include" "C:\Prepared\WindowsKits\10\Include" && ` | |
move "C:\TEMP\Extract\Program Files (x86)\Windows Kits\10\Lib" "C:\Prepared\WindowsKits\10\Lib" && ` | |
move "C:\TEMP\Extract\Program Files (x86)\Windows Kits\10\Redist" "C:\Prepared\WindowsKits\10\Redist" && ` | |
move "C:\TEMP\Extract\Program Files (x86)\Windows Kits\10\Source" "C:\Prepared\WindowsKits\10\Source" && ` | |
rmdir /s /q C:\TEMP\Extract && ` | |
del /q /f C:\Archives\buildtools.tar | |
FROM mcr.microsoft.com/windows/servercore:ltsc2019 | |
SHELL ["cmd", "/S", "/C"] | |
COPY --from=builder ["C:/Prepared", "C:/BuildTools"] | |
COPY --from=builder ["C:/BuildTools/VC/Redist/MSVC/14.42.34433/debug_nonredist", "C:/TEMP/debug_nonredist"] | |
RUN for /R "C:\TEMP\debug_nonredist\x64" %f in (*.dll) do copy "%f" "C:\BuildTools\VC\Tools\MSVC\14.43.34808\bin\Hostx64\x64\" | |
RUN setx PATH "C:\BuildTools\VC\Tools\MSVC\14.43.34808\bin\Hostx64\x64;C:\BuildTools\WindowsKits\10\bin\10.0.22621.0\x64;C:\BuildTools\WindowsKits\10\bin\10.0.22621.0\x64\ucrt;%PATH%" && ` | |
setx INCLUDE "C:\BuildTools\VC\Tools\MSVC\14.43.34808\include;C:\BuildTools\WindowsKits\10\Include\10.0.22621.0\ucrt;C:\BuildTools\WindowsKits\10\Include\10.0.22621.0\shared;C:\BuildTools\WindowsKits\10\Include\10.0.22621.0\um;C:\BuildTools\WindowsKits\10\Include\10.0.22621.0\winrt;C:\BuildTools\WindowsKits\10\Include\10.0.22621.0\cppwinrt" && ` | |
setx LIB "C:\BuildTools\VC\Tools\MSVC\14.43.34808\lib\x64;C:\BuildTools\WindowsKits\10\Lib\10.0.22621.0\ucrt\x64;C:\BuildTools\WindowsKits\10\Lib\10.0.22621.0\um\x64" | |
ENV VSINSTALLDIR=C:\BuildTools ` | |
VSCMD_ARG_HOST_ARCH=x64 ` | |
VSCMD_ARG_TGT_ARCH=x64 ` | |
VCToolsVersion=14.43.34808 ` | |
WindowsSDKVersion=10.0.22621.0\ ` | |
VCToolsInstallDir=C:\BuildTools\VC\Tools\MSVC\14.43.34808\ ` | |
WindowsSdkBinPath=C:\BuildTools\WindowsKits\10\bin\ ` | |
CC=C:\BuildTools\VC\Tools\MSVC\14.43.34808\bin\Hostx64\x64\cl.exe ` | |
CXX=C:\BuildTools\VC\Tools\MSVC\14.43.34808\bin\Hostx64\x64\cl.exe ` | |
vs170comntools=C:\BuildTools\VC\Tools | |
RUN curl -L -o C:\TEMP\python-installer.exe https://www.python.org/ftp/python/3.13.2/python-3.13.2-amd64.exe && ` | |
start /wait C:\TEMP\python-installer.exe /quiet InstallAllUsers=1 PrependPath=1 Include_test=0 /log C:\TEMP\python-install.log && ` | |
set "PATH=C:\Program Files\Python313;C:\Program Files\Python313\Scripts;%PATH%" && ` | |
python.exe -m pip install --upgrade pip conan==2.14.0 && ` | |
conan profile detect --force && ` | |
del /q /f C:\TEMP\*.* && ` | |
rmdir /s /q C:\TEMP | |
RUN mkdir C:\TEMP && ` | |
curl -L -o C:\TEMP\cmake-installer.msi https://github.com/Kitware/CMake/releases/download/v4.0.0/cmake-4.0.0-windows-x86_64.msi && ` | |
start /wait msiexec.exe /i C:\TEMP\cmake-installer.msi /quiet /norestart /l*v "C:\TEMP\cmake-install.log" ADD_CMAKE_TO_PATH="System" && ` | |
del /q /f C:\TEMP\*.* && ` | |
rmdir /s /q C:\TEMP | |
RUN mkdir C:\TEMP && ` | |
curl -L -o C:\TEMP\ninja.zip https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-win.zip && ` | |
mkdir C:\TEMP\ninja && ` | |
tar -xf C:\TEMP\ninja.zip -C C:\TEMP\ninja && ` | |
copy C:\TEMP\ninja\ninja.exe C:\Windows\System32\ninja.exe && ` | |
rmdir /s /q C:\TEMP\ninja && ` | |
del /q /f C:\TEMP\*.* && ` | |
rmdir /s /q C:\TEMP | |
CMD ["powershell.exe", "-NoLogo", "-ExecutionPolicy", "Bypass"] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment