Skip to content

Instantly share code, notes, and snippets.

@NazikMGE
Last active April 1, 2025 16:44
Show Gist options
  • Save NazikMGE/8c0c8c80da622ba7ca8b7068bfca6248 to your computer and use it in GitHub Desktop.
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)
# 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