ವಿಂಡೋಸ್ ಚಿತ್ರಗಳನ್ನು ನಿರ್ಮಿಸಲು ಡಾಕರ್ ಬಹು-ಹಂತವನ್ನು ಬಳಸುವುದು

ಎಲ್ಲರಿಗು ನಮಸ್ಖರ! ನನ್ನ ಹೆಸರು ಆಂಡ್ರೆ, ಮತ್ತು ನಾನು ಅಭಿವೃದ್ಧಿ ತಂಡದಲ್ಲಿ Exness ನಲ್ಲಿ DevOps ಇಂಜಿನಿಯರ್ ಆಗಿ ಕೆಲಸ ಮಾಡುತ್ತೇನೆ. ನನ್ನ ಮುಖ್ಯ ಚಟುವಟಿಕೆಯು Linux ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಂ ಅಡಿಯಲ್ಲಿ (ಇನ್ನು ಮುಂದೆ OS ಎಂದು ಉಲ್ಲೇಖಿಸಲಾಗುತ್ತದೆ) ಡಾಕರ್‌ನಲ್ಲಿ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ನಿರ್ಮಿಸಲು, ನಿಯೋಜಿಸಲು ಮತ್ತು ಬೆಂಬಲಿಸಲು ಸಂಬಂಧಿಸಿದೆ. ಬಹಳ ಹಿಂದೆಯೇ ನಾನು ಅದೇ ಚಟುವಟಿಕೆಗಳೊಂದಿಗೆ ಕಾರ್ಯವನ್ನು ಹೊಂದಿದ್ದೇನೆ, ಆದರೆ ಯೋಜನೆಯ ಗುರಿ ಓಎಸ್ ವಿಂಡೋಸ್ ಸರ್ವರ್ ಮತ್ತು ಸಿ ++ ಯೋಜನೆಗಳ ಒಂದು ಸೆಟ್. ನನಗೆ, ಇದು ವಿಂಡೋಸ್ ಓಎಸ್ ಅಡಿಯಲ್ಲಿ ಡಾಕರ್ ಕಂಟೇನರ್‌ಗಳೊಂದಿಗೆ ಮತ್ತು ಸಾಮಾನ್ಯವಾಗಿ, ಸಿ++ ಅಪ್ಲಿಕೇಶನ್‌ಗಳೊಂದಿಗೆ ಮೊದಲ ನಿಕಟ ಸಂವಹನವಾಗಿದೆ. ಇದಕ್ಕೆ ಧನ್ಯವಾದಗಳು, ನಾನು ಆಸಕ್ತಿದಾಯಕ ಅನುಭವವನ್ನು ಹೊಂದಿದ್ದೇನೆ ಮತ್ತು ವಿಂಡೋಸ್‌ನಲ್ಲಿ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಕಂಟೈನರೈಸಿಂಗ್ ಮಾಡುವ ಕೆಲವು ಜಟಿಲತೆಗಳ ಬಗ್ಗೆ ಕಲಿತಿದ್ದೇನೆ.

ವಿಂಡೋಸ್ ಚಿತ್ರಗಳನ್ನು ನಿರ್ಮಿಸಲು ಡಾಕರ್ ಬಹು-ಹಂತವನ್ನು ಬಳಸುವುದು

ಈ ಲೇಖನದಲ್ಲಿ ನಾನು ಯಾವ ತೊಂದರೆಗಳನ್ನು ಎದುರಿಸಬೇಕಾಗಿತ್ತು ಮತ್ತು ನಾನು ಅವುಗಳನ್ನು ಹೇಗೆ ಪರಿಹರಿಸುತ್ತೇನೆ ಎಂದು ಹೇಳಲು ಬಯಸುತ್ತೇನೆ. ನಿಮ್ಮ ಪ್ರಸ್ತುತ ಮತ್ತು ಭವಿಷ್ಯದ ಸವಾಲುಗಳಿಗೆ ಇದು ಸಹಾಯಕವಾಗಿದೆ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ. ಓದಿ ಆನಂದಿಸಿ!

ಏಕೆ ಕಂಟೈನರ್ಗಳು?

ಕಂಪನಿಯು Hashicorp Nomad ಕಂಟೇನರ್ ಆರ್ಕೆಸ್ಟ್ರೇಟರ್ ಮತ್ತು ಸಂಬಂಧಿತ ಘಟಕಗಳಿಗೆ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಮೂಲಸೌಕರ್ಯವನ್ನು ಹೊಂದಿದೆ - ಕಾನ್ಸುಲ್ ಮತ್ತು ವಾಲ್ಟ್. ಆದ್ದರಿಂದ, ಟರ್ನ್‌ಕೀ ಪರಿಹಾರವನ್ನು ತಲುಪಿಸಲು ಅಪ್ಲಿಕೇಶನ್ ಕಂಟೈನರೈಸೇಶನ್ ಅನ್ನು ಏಕೀಕೃತ ವಿಧಾನವಾಗಿ ಆಯ್ಕೆಮಾಡಲಾಗಿದೆ. ಪ್ರಾಜೆಕ್ಟ್ ಮೂಲಸೌಕರ್ಯವು ವಿಂಡೋಸ್ ಸರ್ವರ್ ಕೋರ್ ಓಎಸ್ ಆವೃತ್ತಿಗಳು 1803 ಮತ್ತು 1809 ನೊಂದಿಗೆ ಡಾಕರ್ ಹೋಸ್ಟ್‌ಗಳನ್ನು ಒಳಗೊಂಡಿರುವುದರಿಂದ, 1803 ಮತ್ತು 1809 ಗಾಗಿ ಡಾಕರ್ ಚಿತ್ರಗಳ ಪ್ರತ್ಯೇಕ ಆವೃತ್ತಿಗಳನ್ನು ನಿರ್ಮಿಸುವುದು ಅವಶ್ಯಕವಾಗಿದೆ. ಆವೃತ್ತಿ 1803 ರಲ್ಲಿ, ಬಿಲ್ಡ್ ಡಾಕರ್ ಹೋಸ್ಟ್‌ನ ಪರಿಷ್ಕರಣೆ ಸಂಖ್ಯೆಯನ್ನು ನೆನಪಿಟ್ಟುಕೊಳ್ಳುವುದು ಬಹಳ ಮುಖ್ಯ ಬೇಸ್ ಡಾಕರ್ ಚಿತ್ರದ ಪರಿಷ್ಕರಣೆ ಸಂಖ್ಯೆ ಮತ್ತು ಈ ಚಿತ್ರದಿಂದ ಧಾರಕವನ್ನು ಪ್ರಾರಂಭಿಸುವ ಹೋಸ್ಟ್‌ಗೆ ಹೊಂದಿಕೆಯಾಗಬೇಕು. ಆವೃತ್ತಿ 1809 ಅಂತಹ ಯಾವುದೇ ನ್ಯೂನತೆಯನ್ನು ಹೊಂದಿಲ್ಲ. ನೀವು ಹೆಚ್ಚು ಓದಬಹುದು ಇಲ್ಲಿ.

ಬಹು-ಹಂತ ಏಕೆ?

ಡೆವಲಪ್‌ಮೆಂಟ್ ಟೀಮ್ ಇಂಜಿನಿಯರ್‌ಗಳು ಹೋಸ್ಟ್‌ಗಳನ್ನು ನಿರ್ಮಿಸಲು ಯಾವುದೇ ಅಥವಾ ಅತ್ಯಂತ ಸೀಮಿತ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿಲ್ಲ; ಈ ಹೋಸ್ಟ್‌ಗಳಲ್ಲಿ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ನಿರ್ಮಿಸಲು ಘಟಕಗಳ ಗುಂಪನ್ನು ತ್ವರಿತವಾಗಿ ನಿರ್ವಹಿಸಲು ಯಾವುದೇ ಮಾರ್ಗವಿಲ್ಲ, ಉದಾಹರಣೆಗೆ, ವಿಷುಯಲ್ ಸ್ಟುಡಿಯೋಗಾಗಿ ಹೆಚ್ಚುವರಿ ಟೂಲ್‌ಸೆಟ್ ಅಥವಾ ವರ್ಕ್‌ಲೋಡ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿ. ಆದ್ದರಿಂದ, ಬಿಲ್ಡ್ ಡಾಕರ್ ಇಮೇಜ್‌ನಲ್ಲಿ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ನಿರ್ಮಿಸಲು ಅಗತ್ಯವಿರುವ ಎಲ್ಲಾ ಘಟಕಗಳನ್ನು ಸ್ಥಾಪಿಸಲು ನಾವು ನಿರ್ಧರಿಸಿದ್ದೇವೆ. ಅಗತ್ಯವಿದ್ದರೆ, ನೀವು ತ್ವರಿತವಾಗಿ ಡಾಕರ್‌ಫೈಲ್ ಅನ್ನು ಮಾತ್ರ ಬದಲಾಯಿಸಬಹುದು ಮತ್ತು ಈ ಚಿತ್ರವನ್ನು ರಚಿಸಲು ಪೈಪ್‌ಲೈನ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಬಹುದು.

ಸಿದ್ಧಾಂತದಿಂದ ಕ್ರಿಯೆಗೆ

ಆದರ್ಶ ಡಾಕರ್ ಬಹು-ಹಂತದ ಇಮೇಜ್ ಬಿಲ್ಡ್‌ನಲ್ಲಿ, ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ನಿರ್ಮಿಸಲು ಪರಿಸರವನ್ನು ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ನಿರ್ಮಿಸಿದ ಅದೇ ಡಾಕರ್‌ಫೈಲ್ ಸ್ಕ್ರಿಪ್ಟ್‌ನಲ್ಲಿ ತಯಾರಿಸಲಾಗುತ್ತದೆ. ಆದರೆ ನಮ್ಮ ಸಂದರ್ಭದಲ್ಲಿ, ಮಧ್ಯಂತರ ಲಿಂಕ್ ಅನ್ನು ಸೇರಿಸಲಾಗಿದೆ, ಅವುಗಳೆಂದರೆ, ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ನಿರ್ಮಿಸಲು ಅಗತ್ಯವಿರುವ ಎಲ್ಲದರೊಂದಿಗೆ ಡಾಕರ್ ಚಿತ್ರವನ್ನು ರಚಿಸುವ ಪ್ರಾಥಮಿಕ ಹಂತ. ಎಲ್ಲಾ ಅವಲಂಬನೆಗಳ ಅನುಸ್ಥಾಪನಾ ಸಮಯವನ್ನು ಕಡಿಮೆ ಮಾಡಲು ನಾನು ಡಾಕರ್ ಕ್ಯಾಶ್ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಬಳಸಲು ಬಯಸಿದ್ದರಿಂದ ಇದನ್ನು ಮಾಡಲಾಗಿದೆ.

ಈ ಚಿತ್ರವನ್ನು ರಚಿಸಲು ಡಾಕರ್‌ಫೈಲ್ ಸ್ಕ್ರಿಪ್ಟ್‌ನ ಮುಖ್ಯ ಅಂಶಗಳನ್ನು ನೋಡೋಣ.

ವಿಭಿನ್ನ OS ಆವೃತ್ತಿಗಳ ಚಿತ್ರಗಳನ್ನು ರಚಿಸಲು, ನೀವು ಡಾಕರ್‌ಫೈಲ್‌ನಲ್ಲಿ ಆರ್ಗ್ಯುಮೆಂಟ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಬಹುದು, ಅದರ ಮೂಲಕ ಬಿಲ್ಡ್ ಸಮಯದಲ್ಲಿ ಆವೃತ್ತಿ ಸಂಖ್ಯೆಯನ್ನು ರವಾನಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಇದು ಮೂಲ ಚಿತ್ರದ ಟ್ಯಾಗ್ ಆಗಿದೆ.

ಮೈಕ್ರೋಸಾಫ್ಟ್ ವಿಂಡೋಸ್ ಸರ್ವರ್ ಇಮೇಜ್ ಟ್ಯಾಗ್‌ಗಳ ಸಂಪೂರ್ಣ ಪಟ್ಟಿಯನ್ನು ಕಾಣಬಹುದು ಇಲ್ಲಿ.

ARG WINDOWS_OS_VERSION=1809
FROM mcr.microsoft.com/windows/servercore:$WINDOWS_OS_VERSION

ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಸೂಚನೆಗಳಲ್ಲಿನ ಆಜ್ಞೆಗಳು RUN ವಿಂಡೋಸ್ ಓಎಸ್‌ನಲ್ಲಿನ ಡಾಕರ್‌ಫೈಲ್‌ನಲ್ಲಿ ಅವುಗಳನ್ನು cmd.exe ಕನ್ಸೋಲ್‌ನಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ. ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳನ್ನು ಬರೆಯುವ ಅನುಕೂಲಕ್ಕಾಗಿ ಮತ್ತು ಬಳಸಿದ ಆಜ್ಞೆಗಳ ಕಾರ್ಯವನ್ನು ವಿಸ್ತರಿಸಲು, ನಾವು ಪವರ್‌ಶೆಲ್‌ನಲ್ಲಿ ಕಮಾಂಡ್ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಕನ್ಸೋಲ್ ಅನ್ನು ಸೂಚನೆಯ ಮೂಲಕ ಮರು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತೇವೆ SHELL.

SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop';"]

ಮುಂದಿನ ಹಂತವೆಂದರೆ ಚಾಕೊಲೇಟಿ ಪ್ಯಾಕೇಜ್ ಮ್ಯಾನೇಜರ್ ಮತ್ತು ಅಗತ್ಯ ಪ್ಯಾಕೇಜ್‌ಗಳನ್ನು ಸ್ಥಾಪಿಸುವುದು:

COPY chocolatey.pkg.config .
RUN Set-ExecutionPolicy Bypass -Scope Process -Force ;
    [System.Net.ServicePointManager]::SecurityProtocol = 
    [System.Net.ServicePointManager]::SecurityProtocol -bor 3072 ;
    $env:chocolateyUseWindowsCompression = 'true' ;
    iex ((New-Object System.Net.WebClient).DownloadString( 
      'https://chocolatey.org/install.ps1')) ;
    choco install chocolatey.pkg.config -y --ignore-detected-reboot ;
    if ( @(0, 1605, 1614, 1641, 3010) -contains $LASTEXITCODE ) { 
      refreshenv; } else { exit $LASTEXITCODE; } ;
    Remove-Item 'chocolatey.pkg.config'

ಚಾಕೊಲೇಟಿಯನ್ನು ಬಳಸಿಕೊಂಡು ಪ್ಯಾಕೇಜ್‌ಗಳನ್ನು ಸ್ಥಾಪಿಸಲು, ನೀವು ಅವುಗಳನ್ನು ಪಟ್ಟಿಯಾಗಿ ರವಾನಿಸಬಹುದು ಅಥವಾ ಪ್ರತಿ ಪ್ಯಾಕೇಜ್‌ಗೆ ಅನನ್ಯ ನಿಯತಾಂಕಗಳನ್ನು ರವಾನಿಸಬೇಕಾದರೆ ಅವುಗಳನ್ನು ಒಂದೊಂದಾಗಿ ಸ್ಥಾಪಿಸಬಹುದು. ನಮ್ಮ ಪರಿಸ್ಥಿತಿಯಲ್ಲಿ, ನಾವು XML ಫಾರ್ಮ್ಯಾಟ್‌ನಲ್ಲಿ ಮ್ಯಾನಿಫೆಸ್ಟ್ ಫೈಲ್ ಅನ್ನು ಬಳಸಿದ್ದೇವೆ, ಇದು ಅಗತ್ಯವಿರುವ ಪ್ಯಾಕೇಜ್‌ಗಳ ಪಟ್ಟಿ ಮತ್ತು ಅವುಗಳ ನಿಯತಾಂಕಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. ಅದರ ವಿಷಯಗಳು ಈ ರೀತಿ ಕಾಣುತ್ತವೆ:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="python" version="3.8.2"/>
  <package id="nuget.commandline" version="5.5.1"/>
  <package id="git" version="2.26.2"/>
</packages>

ಮುಂದೆ, ನಾವು ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಾಣ ಪರಿಸರವನ್ನು ಸ್ಥಾಪಿಸುತ್ತೇವೆ, ಅವುಗಳೆಂದರೆ, MS ಬಿಲ್ಡ್ ಟೂಲ್ಸ್ 2019 - ಇದು ವಿಷುಯಲ್ ಸ್ಟುಡಿಯೋ 2019 ರ ಹಗುರವಾದ ಆವೃತ್ತಿಯಾಗಿದೆ, ಇದು ಕೋಡ್ ಅನ್ನು ಕಂಪೈಲ್ ಮಾಡಲು ಅಗತ್ಯವಿರುವ ಕನಿಷ್ಠ ಘಟಕಗಳನ್ನು ಒಳಗೊಂಡಿದೆ.
ನಮ್ಮ C++ ಯೋಜನೆಯೊಂದಿಗೆ ಸಂಪೂರ್ಣವಾಗಿ ಕೆಲಸ ಮಾಡಲು, ನಮಗೆ ಹೆಚ್ಚುವರಿ ಘಟಕಗಳು ಬೇಕಾಗುತ್ತವೆ, ಅವುಗಳೆಂದರೆ:

  • ಕೆಲಸದ ಹೊರೆ C++ ಪರಿಕರಗಳು
  • ಟೂಲ್‌ಸೆಟ್ v141
  • Windows 10 SDK (10.0.17134.0)

JSON ಫಾರ್ಮ್ಯಾಟ್‌ನಲ್ಲಿ ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ನೀವು ವಿಸ್ತೃತ ಪರಿಕರಗಳ ಸೆಟ್ ಅನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸ್ಥಾಪಿಸಬಹುದು. ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್ ವಿಷಯಗಳು:

ಲಭ್ಯವಿರುವ ಘಟಕಗಳ ಸಂಪೂರ್ಣ ಪಟ್ಟಿಯನ್ನು ದಸ್ತಾವೇಜನ್ನು ಸೈಟ್ನಲ್ಲಿ ಕಾಣಬಹುದು ಮೈಕ್ರೋಸಾಫ್ಟ್ ವಿಷುಯಲ್ ಸ್ಟುಡಿಯೋ.

{
  "version": "1.0",
  "components": [
    "Microsoft.Component.MSBuild",
    "Microsoft.VisualStudio.Workload.VCTools;includeRecommended",
    "Microsoft.VisualStudio.Component.VC.v141.x86.x64",
    "Microsoft.VisualStudio.Component.Windows10SDK.17134"
  ]
}

ಡಾಕರ್‌ಫೈಲ್ ಅನುಸ್ಥಾಪನಾ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ರನ್ ಮಾಡುತ್ತದೆ, ಮತ್ತು ಅನುಕೂಲಕ್ಕಾಗಿ, ಪರಿಸರ ವೇರಿಯಬಲ್‌ಗೆ ಬಿಲ್ಡ್ ಟೂಲ್ಸ್ ಎಕ್ಸಿಕ್ಯೂಟಬಲ್ ಫೈಲ್‌ಗಳಿಗೆ ಮಾರ್ಗವನ್ನು ಸೇರಿಸುತ್ತದೆ. PATH. ಚಿತ್ರದ ಗಾತ್ರವನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಅನಗತ್ಯ ಫೈಲ್ಗಳು ಮತ್ತು ಡೈರೆಕ್ಟರಿಗಳನ್ನು ತೆಗೆದುಹಾಕಲು ಸಹ ಸಲಹೆ ನೀಡಲಾಗುತ್ತದೆ.

COPY buildtools.config.json .
RUN Invoke-WebRequest 'https://aka.ms/vs/16/release/vs_BuildTools.exe' 
      -OutFile '.vs_buildtools.exe' -UseBasicParsing ;
    Start-Process -FilePath '.vs_buildtools.exe' -Wait -ArgumentList 
      '--quiet --norestart --nocache --config C:buildtools.config.json' ;
    Remove-Item '.vs_buildtools.exe' ;
    Remove-Item '.buildtools.config.json' ;
    Remove-Item -Force -Recurse 
      'C:Program Files (x86)Microsoft Visual StudioInstaller' ;
    $env:PATH = 'C:Program Files (x86)Microsoft Visual Studio2019BuildToolsMSBuildCurrentBin;' + $env:PATH; 
    [Environment]::SetEnvironmentVariable('PATH', $env:PATH, 
      [EnvironmentVariableTarget]::Machine)

ಈ ಹಂತದಲ್ಲಿ, C++ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಕಂಪೈಲ್ ಮಾಡಲು ನಮ್ಮ ಚಿತ್ರ ಸಿದ್ಧವಾಗಿದೆ ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್‌ನ ಡಾಕರ್ ಬಹು-ಹಂತದ ನಿರ್ಮಾಣವನ್ನು ರಚಿಸಲು ನಾವು ನೇರವಾಗಿ ಮುಂದುವರಿಯಬಹುದು.

ಕ್ರಿಯೆಯಲ್ಲಿ ಬಹು-ಹಂತ

ಬೋರ್ಡ್‌ನಲ್ಲಿರುವ ಎಲ್ಲಾ ಪರಿಕರಗಳೊಂದಿಗೆ ರಚಿಸಲಾದ ಚಿತ್ರವನ್ನು ನಾವು ಬಿಲ್ಡ್ ಇಮೇಜ್ ಆಗಿ ಬಳಸುತ್ತೇವೆ. ಹಿಂದಿನ ಡಾಕರ್‌ಫೈಲ್ ಸ್ಕ್ರಿಪ್ಟ್‌ನಂತೆ, ಕೋಡ್ ಮರುಬಳಕೆಯ ಸುಲಭಕ್ಕಾಗಿ ಆವೃತ್ತಿ ಸಂಖ್ಯೆ/ಇಮೇಜ್ ಟ್ಯಾಗ್ ಅನ್ನು ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ನಿರ್ದಿಷ್ಟಪಡಿಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ನಾವು ಸೇರಿಸುತ್ತೇವೆ. ಲೇಬಲ್ ಅನ್ನು ಸೇರಿಸುವುದು ಮುಖ್ಯ as builder ಸೂಚನೆಗಳಲ್ಲಿ ಅಸೆಂಬ್ಲಿ ಚಿತ್ರಕ್ಕೆ FROM.

ARG WINDOWS_OS_VERSION=1809
FROM buildtools:$WINDOWS_OS_VERSION as builder

ಈಗ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಿಸಲು ಸಮಯ. ಇಲ್ಲಿ ಎಲ್ಲವೂ ತುಂಬಾ ಸರಳವಾಗಿದೆ: ಮೂಲ ಕೋಡ್ ಮತ್ತು ಅದಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಎಲ್ಲವನ್ನೂ ನಕಲಿಸಿ ಮತ್ತು ಸಂಕಲನ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪ್ರಾರಂಭಿಸಿ.

COPY myapp .
RUN nuget restore myapp.sln ;
    msbuild myapp.sln /t:myapp /p:Configuration=Release

ಅಂತಿಮ ಚಿತ್ರವನ್ನು ರಚಿಸುವ ಅಂತಿಮ ಹಂತವು ಅಪ್ಲಿಕೇಶನ್‌ನ ಮೂಲ ಚಿತ್ರವನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುವುದು, ಅಲ್ಲಿ ಎಲ್ಲಾ ಸಂಕಲನ ಕಲಾಕೃತಿಗಳು ಮತ್ತು ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್‌ಗಳು ನೆಲೆಗೊಳ್ಳುತ್ತವೆ. ಮಧ್ಯಂತರ ಅಸೆಂಬ್ಲಿ ಚಿತ್ರದಿಂದ ಸಂಕಲಿಸಿದ ಫೈಲ್ಗಳನ್ನು ನಕಲಿಸಲು, ನೀವು ನಿಯತಾಂಕವನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಬೇಕು --from=builder ಸೂಚನೆಗಳಲ್ಲಿ COPY.

FROM mcr.microsoft.com/windows/servercore:$WINDOWS_OS_VERSION

COPY --from=builder C:/x64/Release/myapp/ ./
COPY ./configs ./

ಈಗ ಉಳಿದಿರುವುದು ನಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ ಕೆಲಸ ಮಾಡಲು ಅಗತ್ಯವಾದ ಅವಲಂಬನೆಗಳನ್ನು ಸೇರಿಸುವುದು ಮತ್ತು ಸೂಚನೆಗಳ ಮೂಲಕ ಉಡಾವಣಾ ಆಜ್ಞೆಯನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುವುದು ENTRYPOINT ಅಥವಾ CMD.

ತೀರ್ಮಾನಕ್ಕೆ

ಈ ಲೇಖನದಲ್ಲಿ, ವಿಂಡೋಸ್ ಅಡಿಯಲ್ಲಿ ಕಂಟೇನರ್‌ನಲ್ಲಿ ಸಿ ++ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗೆ ಪೂರ್ಣ ಪ್ರಮಾಣದ ಸಂಕಲನ ಪರಿಸರವನ್ನು ಹೇಗೆ ರಚಿಸುವುದು ಮತ್ತು ನಮ್ಮ ಅಪ್ಲಿಕೇಶನ್‌ನ ಪೂರ್ಣ ಪ್ರಮಾಣದ ಚಿತ್ರಗಳನ್ನು ರಚಿಸಲು ಡಾಕರ್ ಬಹು-ಹಂತದ ನಿರ್ಮಾಣಗಳ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ಹೇಗೆ ಬಳಸುವುದು ಎಂಬುದರ ಕುರಿತು ನಾನು ಮಾತನಾಡಿದ್ದೇನೆ.

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ