2016-04-15 18 views
8

में माइक्रोसॉफ्ट कंपाइलर मैं कोड बेस के निर्माण का समर्थन करने के लिए एक डॉकर कंटेनर सेट करना चाहता हूं जो पूरी तरह से सी ++ में लिखा गया है, और जेनरेट किया गया एप्लिकेशन केवल विंडोज़ पर चलता है।डॉकर

इस उद्देश्य के लिए, मुझे निर्माण के समर्थन के लिए हमारे वर्तमान निर्माण पर्यावरण की प्रतिलिपि बनाने वाला एक कंटेनर सेट अप करने की आवश्यकता है।

मैं नीचे की तरह एक Dockerfile कुछ इस तरह के एक कंटेनर के निर्माण के लिए बनाने की जरूरत:

कृपया (छद्म कोड Dockerfile की तरह के रूप में निम्नलिखित पर विचार की अनदेखी apt-get और खिड़कियां उपकरण स्थापित करने के लिए किसी भी अन्य उपयोगिता पर विचार

FROM: Windows10 // A base windows kernel 

RUN apt-get install -y VisualStudio // Installing the Visual Studio for compilation of C++ files 

RUN apt-get install -y cygwin // Since I am using some cygwin utlities in build process 

RUN apt-get install -y SigningTool // A tool I need to sign the exe 

RUN apt-get install -y CompressionTool // A tool I need to compress the exe 

RUN apt-get install -y BuildSystem // Custom in-house build system to generate the builds of the source code 

CMD ['BuildSystem debug'] 

नोट:: कमांड लाइन) से हम बनाता प्रदर्शन करने के लिए हमारे संगठन में एक कस्टम निर्माण प्रणाली (और का उपयोग नहीं कर जीएनयू बनाओ) है। डिबग बिल्ड सिस्टम को प्रदान किया गया लक्ष्य है, क्योंकि मैं डीबग निष्पादन योग्य बनाना चाहता हूं।

मेरे संदेह हैं:

  1. मैं एक VisualStudio संकलक (या किसी अन्य संकलक कि खिड़कियों पर चलाता है)

  2. मैं कैसे की मेजबानी करते SigningTool कैसे स्थापित करते हैं, संपीड़न टूल और अन्य निष्पादन योग्य (पर डॉकर विश्वसनीय रजिस्ट्री; चाहे यह संभव हो डीटीआर पर निष्पादनयोग्य की मेजबानी के लिए)

  3. मैं कैसे ऊपर उपकरण (संकलक, signingtool की लाइसेंस की देखभाल, सभी को चलाने के लिए लाइसेंस के लिए आवश्यक compressiontool) से करते हैं।

उपर्युक्त काम हमारे संगठन में बिल्कुल ठीक है। लेकिन मशीन स्थापित करने की प्रक्रिया (स्थापना और उपरोक्त सभी उपकरणों में बहुत समय और प्रयास लगता है)। इसलिए, मैं एक डॉकर छवि बनाना चाहता हूं जिसे एक नंगे मशीन पर तैनात किया जा सकता है, जिसमें पूरे निर्माण पर्यावरण सेटअप और बहुत कम समय में चलना होगा।

ऐसा करने का एक और महत्वपूर्ण उद्देश्य निरंतर वितरण पद्धति को अपनाना है।

कृपया अपने इनपुट प्रदान करें (सभी संदेहों पर विचार करने का प्रयास करें)।

उत्तर

1

बस स्पष्ट होने के लिए, आपको इसके लिए विंडोज़ के लिए डॉकर की आवश्यकता होगी।

और मैं के बारे में Docker for Mac and Windows Beta है, जो एक लिनक्स (अल्पाइन) विंडोज पर एक हाइपर-वी वी एम पर मेजबान चल पाएंगे बात नहीं कर रहा: कि किसी भी Windows छवि, केवल लिनक्स छवियों को चलाने के नहीं होता।

मैं विंडोज़ के लिए डॉकर के बारे में बात कर रहा हूं (आपके Windows10 has the latest Hyper-V feature प्रदान किया गया)। हाल ही में, यह केवल Windows Server 2016 TP4 पर संभव था।

2

मुझे लगता है कि आप पहले से ही विंडोज कंटेनर चला सकते हैं, उदा।docker run -it microsoft/windowsservercore

यहाँ विजुअल C++ स्थापित Chocolatey का उपयोग कर डोकर कंटेनर में उपकरण 2015 का निर्माण करने के लिए अपने Dockerfile है:

# escape=` 

FROM microsoft/windowsservercore 

# Install chocolatey 
RUN @powershell -NoProfile -ExecutionPolicy unrestricted -Command "(iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))) >$null 2>&1" 

# Install Visual C++ Build Tools, as per: https://chocolatey.org/packages/visualcpp-build-tools 
RUN choco install visualcpp-build-tools -version 14.0.25420.1 -y 

# Add msbuild to PATH 
RUN setx /M PATH "%PATH%;C:\Program Files (x86)\MSBuild\14.0\bin" 

# Test msbuild can be accessed without path 
RUN msbuild -version 

CMD [ "cmd.exe" ] 

का उपयोग चोको सरल है, लेकिन आप देशी वेब को डाउनलोड करने के साथ ही परिणाम प्राप्त कर सकते हैं इंस्टॉलर और इसे शांत मोड में चला रहा है, उदाहरण के लिए:

visualcppbuildtools_full.exe /Q /L <LogFile> /Full 
0

उत्तर में टी ओ अपना पहला बिंदु केवल: Install Build Tools into a Container

मैं विंडोज सर्वर 2016 को डोकर चला रहा हूँ और एक विरासत अनुप्रयोग है कि लक्ष्य संकलन: वहाँ एक दस्तावेज़ यहाँ है कि मैं एक विंडोज सी ++ आवेदन संकलित करने के लिए एक डोकर छवि के लिए एक प्रारंभिक बिंदु के रूप में इस्तेमाल किया है XP।

# Use the latest Windows Server Core image. 
FROM microsoft/windowsservercore 

# Download the Visual Studio 2017 installer outside of the PATH. 
# This is required for Windows SDK 7.1A (XP targetting) 
ADD https://aka.ms/vs/15/release/vs_professional.exe C:\\TEMP\\vs_professional.exe 

# Add C:\Bin to PATH and install Build Tools with components we need 
RUN setx /m PATH "%PATH%;C:\Bin" \ 
&& C:\TEMP\vs_professional.exe --quiet --wait --norestart --nocache \ 
    --add Microsoft.VisualStudio.Component.Static.Analysis.Tools \ 
    --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 \ 
    --add Microsoft.VisualStudio.Component.VC.CMake.Project \ 
    --add Microsoft.VisualStudio.Component.VC.CoreBuildTools \ 
    --add Microsoft.VisualStudio.Component.VC.ATLMFC \ 
    --add Microsoft.VisualStudio.Component.VC.ATL \ 
    --add Microsoft.VisualStudio.Component.Windows10SDK.16299.Desktop \ 
    --add Microsoft.VisualStudio.Component.Windows10SDK.16299.UWP \ 
    --add Microsoft.VisualStudio.Component.Windows10SDK.16299.UWP.Native \ 
    --add Microsoft.VisualStudio.Component.Windows10SDK \ 
    --add Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Win81 \ 
    --add Microsoft.VisualStudio.Component.VC.Redist.14.Latest \ 
    --add Microsoft.Component.VC.Runtime.UCRTSDK \ 
    --add Microsoft.VisualStudio.Component.WinXP \ 
|| IF "%ERRORLEVEL%"=="3010" EXIT 0 

# Start developer command prompt with any other commands specified. 
ENTRYPOINT "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\Tools\VsDevCmd.bat" && 

# Default to PowerShell if no other command specified. 
CMD ["powershell.exe", "-NoLogo", "-ExecutionPolicy", "Bypass"] 
:

मेरे अंतिम Dockerfile इस तरह देखा