เดตเดฟเตปเดกเต‹เดธเต เด‡เดฎเต‡เดœเตเด•เตพ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เดพเตป เดกเต‹เด•เตเด•เตผ เดฎเตพเดŸเตเดŸเดฟ-เดธเตเดฑเตเดฑเต‡เดœเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต

เดŽเดฒเตเดฒเดพเดตเตผเด•เตเด•เตเด‚ เดนเดพเดฏเต! เดŽเดจเตเดฑเต† เดชเต‡เดฐเต เด†เตปเดกเตเดฐเดฟ, เดžเดพเตป เดกเต†เดตเดฒเดชเตโ€Œเดฎเต†เดจเตเดฑเต เดŸเต€เดฎเดฟเดฒเต† Exness-เตฝ DevOps เดŽเดžเตเดšเดฟเดจเต€เดฏเดฑเดพเดฏเดฟ เดœเต‹เดฒเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดฒเดฟเดจเด•เตเดธเต เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเดฟเด‚เด—เต เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดจเต เด•เต€เดดเดฟเดฒเตเดณเตเดณ เดกเต‹เด•เตเด•เดฑเดฟเตฝ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเดคเตเด‚ เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เตเดจเตเดจเดคเตเด‚ เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเดจเตเดจเดคเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸเดคเดพเดฃเต เดŽเดจเตเดฑเต† เดชเตเดฐเดงเดพเดจ เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ (เด‡เดจเดฟ OS เดŽเดจเตเดจเต เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจเต). เด…เดงเดฟเด•เด‚ เดคเดพเดฎเดธเดฟเดฏเดพเดคเต† เดŽเดจเดฟเด•เตเด•เต เดธเดฎเดพเดจ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเตเดณเตเดณ เด’เดฐเต เดšเตเดฎเดคเดฒ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเต, เดŽเดจเตเดจเดพเตฝ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเตเดฑเต† เดŸเดพเตผเด—เต†เดฑเตเดฑเต เด’เดŽเดธเต เดตเดฟเตปเดกเต‹เดธเต เดธเต†เตผเดตเดฑเตเด‚ เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚ เดธเดฟ ++ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเตเด•เดณเตเด‚ เด†เดฏเดฟเดฐเตเดจเตเดจเต. เดŽเดจเตเดจเต† เดธเด‚เดฌเดจเตเดงเดฟเดšเตเดšเดฟเดŸเดคเตเดคเต‹เดณเด‚, เด‡เดคเต Windows OS-เดจเต เด•เต€เดดเดฟเดฒเตเดณเตเดณ เดกเต‹เด•เตเด•เตผ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เดณเตเดฎเดพเดฏเตเด‚ เดชเตŠเดคเตเดตเต† C++ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เดณเตเดฎเดพเดฏเตเด‚ เด‰เดณเตเดณ เด†เดฆเตเดฏเดคเตเดคเต† เด…เดŸเตเดคเตเดค เด†เดถเดฏเดตเดฟเดจเดฟเดฎเดฏเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต. เด‡เดคเดฟเดจเต เดจเดจเตเดฆเดฟ, เดŽเดจเดฟเด•เตเด•เต เดฐเดธเด•เดฐเดฎเดพเดฏ เด’เดฐเต เด…เดจเตเดญเดตเด‚ เด‰เดฃเตเดŸเดพเดฏเดฟ, เดตเดฟเตปเดกเต‹เดธเดฟเดฒเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตˆเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดฑเต† เดšเดฟเดฒ เดธเด™เตเด•เต€เตผเดฃเดคเด•เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดชเด เดฟเดšเตเดšเต.

เดตเดฟเตปเดกเต‹เดธเต เด‡เดฎเต‡เดœเตเด•เตพ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เดพเตป เดกเต‹เด•เตเด•เตผ เดฎเตพเดŸเตเดŸเดฟ-เดธเตเดฑเตเดฑเต‡เดœเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต

เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เดŽเดจเดฟเด•เตเด•เต เดŽเดจเตเดคเต เดฌเตเดฆเตเดงเดฟเดฎเตเดŸเตเดŸเตเด•เตพ เดจเต‡เดฐเดฟเดŸเต‡เดฃเตเดŸเดฟเดตเดจเตเดจเตเดตเต†เดจเตเดจเตเด‚ เด…เดต เดŽเด™เตเด™เดจเต† เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เดพเตป เดธเดพเดงเดฟเดšเตเดšเตเดตเต†เดจเตเดจเตเด‚ เดจเดฟเด™เตเด™เดณเต‹เดŸเต เดชเดฑเดฏเดพเตป เดžเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต. เดจเดฟเด™เตเด™เดณเตเดŸเต† เดจเดฟเดฒเดตเดฟเดฒเต†เดฏเตเด‚ เดญเดพเดตเดฟเดฏเดฟเดฒเต†เดฏเตเด‚ เดตเต†เดฒเตเดฒเตเดตเดฟเดณเดฟเด•เตพเด•เตเด•เต เด‡เดคเต เดธเดนเดพเดฏเด•เดฎเดพเด•เตเดฎเต†เดจเตเดจเต เดžเดพเตป เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต. เดตเดพเดฏเดจ เด†เดธเตเดตเดฆเดฟเด•เตเด•เต‚!

เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเต เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเตเด•เตพ?

เดนเดพเดทเดฟเด•เต‹เตผเดชเต เดจเต‹เดฎเดพเดกเต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ เด“เตผเด•เตเด•เดธเตโ€ŒเดŸเตเดฐเต‡เดฑเตเดฑเดฑเดฟเดจเตเด‚ เด…เดจเตเดฌเดจเตเดง เด˜เดŸเด•เด™เตเด™เตพเด•เตเด•เตเดฎเดพเดฏเดฟ เด•เดฎเตเดชเดจเดฟเด•เตเด•เต เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณ เด‡เตปเดซเตเดฐเดพเดธเตเดŸเตเดฐเด•เตเดšเตผ เด‰เดฃเตเดŸเต - เด•เต‹เตบเดธเตฝ, เดตเต‹เตพเดŸเตเดŸเต. เด…เดคเดฟเดจเดพเตฝ, เด’เดฐเต เดธเดฎเตเดชเต‚เตผเดฃเตเดฃ เดชเดฐเดฟเดนเดพเดฐเด‚ เดจเตฝเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดเด•เต€เด•เตƒเดค เดฐเต€เดคเดฟเดฏเดพเดฏเดฟ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตˆเดธเต‡เดทเตป เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดคเตเดคเต. เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เด‡เตปเดซเตเดฐเดพเดธเตเดŸเตเดฐเด•เตเดšเดฑเดฟเตฝ เดตเดฟเตปเดกเต‹เดธเต เดธเต†เตผเดตเตผ เด•เต‹เตผ เด’เดŽเดธเต เดชเดคเดฟเดชเตเดชเตเด•เตพ 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"
  ]
}

dockerfile เด‡เตปเดธเตเดฑเตเดฑเดฒเต‡เดทเตป เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต, เดธเต—เด•เดฐเตเดฏเดพเตผเดคเตเดฅเด‚, เดŽเตปเดตเดฏเต‹เตบเดฎเต†เดจเตเดฑเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเดฟเดฒเต‡เด•เตเด•เต เดฌเดฟเตฝเดกเต เดŸเต‚เดณเตเด•เตพ เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเดฌเดฟเตพ เดซเดฏเดฒเตเด•เดณเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดชเดพเดค เดšเต‡เตผเด•เตเด•เตเดจเตเดจเต. 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

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•