เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจกเฉŒเจ•เจฐ เจฎเจฒเจŸเฉ€-เจธเจŸเฉ‡เจœ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ

เจธเจพเจฐเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจธเจคเจฟ เจธเจผเฉเจฐเฉ€ เจ…เจ•เจพเจฒ! เจฎเฉ‡เจฐเจพ เจจเจพเจฎ เจเจ‚เจกเจฐเฉ€ เจนเฉˆ, เจ…เจคเฉ‡ เจฎเฉˆเจ‚ เจตเจฟเจ•เจพเจธ เจŸเฉ€เจฎ เจตเจฟเฉฑเจš Exness เจตเจฟเฉฑเจš เจ‡เฉฑเจ• DevOps เจ‡เฉฐเจœเฉ€เจจเฉ€เจ…เจฐ เจตเจœเฉ‹เจ‚ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเจพเจ‚เฅค เจฎเฉ‡เจฐเฉ€ เจฎเฉเฉฑเจ– เจ—เจคเฉ€เจตเจฟเจงเฉ€ เจฒเฉ€เจจเจ•เจธ เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ (เจ‡เจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ OS เจตเจœเฉ‹เจ‚ เจœเจพเจฃเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ) เจฆเฉ‡ เจ…เจงเฉ€เจจ เจกเฉŒเจ•เจฐ เจตเจฟเฉฑเจš เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจฌเจฃเจพเจ‰เจฃ, เจคเฉˆเจจเจพเจค เจ•เจฐเจจ เจ…เจคเฉ‡ เจธเจฎเจฐเจฅเจจ เจ•เจฐเจจ เจจเจพเจฒ เจธเจฌเฉฐเจงเจค เจนเฉˆเฅค เจ•เฉเจ เจธเจฎเจพเจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจฎเฉ‡เจฐเฉ‡ เจ•เฉ‹เจฒ เจ‰เจนเฉ€ เจ—เจคเฉ€เจตเจฟเจงเฉ€เจ†เจ‚ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจ•เฉฐเจฎ เจธเฉ€, เจชเจฐ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเจพ เจŸเฉ€เจšเจพ OS เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจธเจฐเจตเจฐ เจ…เจคเฉ‡ C++ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸเจพเจ‚ เจฆเจพ เจ‡เฉฑเจ• เจธเจฎเฉ‚เจน เจธเฉ€เฅค เจฎเฉ‡เจฐเฉ‡ เจฒเจˆ, เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจ“เจเจธ เจฆเฉ‡ เจ…เจงเฉ€เจจ เจกเฉŒเจ•เจฐ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚ เจจเจพเจฒ เจ…เจคเฉ‡, เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡, เจธเฉ€ ++ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจจเจพเจฒ เจ‡เจน เจชเจนเจฟเจฒเฉ€ เจจเจœเจผเจฆเฉ€เจ•เฉ€ เจ—เฉฑเจฒเจฌเจพเจค เจธเฉ€เฅค เจ‡เจธเจฆเฉ‡ เจฒเจˆ เจงเฉฐเจจเจตเจพเจฆ, เจฎเฉ‡เจฐเฉ‡ เจ•เฉ‹เจฒ เจ‡เฉฑเจ• เจฆเจฟเจฒเจšเจธเจช เจ…เจจเฉเจญเจต เจธเฉ€ เจ…เจคเฉ‡ เจฎเฉˆเจ‚ เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจตเจฟเฉฑเจš เจ•เฉฐเจŸเฉ‡เจจเจฐเจฟเฉฐเจ— เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจฆเฉ€เจ†เจ‚ เจ•เฉเจ เจชเฉ‡เจšเฉ€เจฆเจ—เฉ€เจ†เจ‚ เจฌเจพเจฐเฉ‡ เจธเจฟเฉฑเจ–เจฟเจ†เฅค

เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจกเฉŒเจ•เจฐ เจฎเจฒเจŸเฉ€-เจธเจŸเฉ‡เจœ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ

เจ‡เจธ เจฒเฉ‡เจ– เจตเจฟเจš เจฎเฉˆเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฆเฉฑเจธเจฃเจพ เจšเจพเจนเฉเฉฐเจฆเจพ เจนเจพเจ‚ เจ•เจฟ เจฎเฉˆเจจเฉ‚เฉฐ เจ•เจฟเจนเฉœเฉ€เจ†เจ‚ เจฎเฉเจธเจผเจ•เจฒเจพเจ‚ เจฆเจพ เจธเจพเจนเจฎเจฃเจพ เจ•เจฐเจจเจพ เจชเจฟเจ† เจ…เจคเฉ‡ เจฎเฉˆเจ‚ เจ‰เจจเฉเจนเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจนเฉฑเจฒ เจ•เฉ€เจคเจพ. เจฎเฉˆเจจเฉ‚เฉฐ เจ‰เจฎเฉ€เจฆ เจนเฉˆ เจ•เจฟ เจ‡เจน เจคเฉเจนเจพเจกเฉ€ เจฎเฉŒเจœเฉ‚เจฆเจพ เจ…เจคเฉ‡ เจญเจตเจฟเฉฑเจ– เจฆเฉ€เจ†เจ‚ เจšเฉเจฃเฉŒเจคเฉ€เจ†เจ‚ เจฒเจˆ เจฎเจฆเจฆเจ—เจพเจฐ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค เจชเฉœเฉเจนเจจ เจฆเจพ เจ†เจจเฉฐเจฆ เจฎเจพเจฃเฉ‹!

เจ•เฉฐเจŸเฉ‡เจจเจฐ เจ•เจฟเจ‰เจ‚?

เจ•เฉฐเจชเจจเฉ€ เจ•เฉ‹เจฒ เจนเฉˆเจธเจผเฉ€เจ•เฉ‹เจฐเจช เจจเฉ‹เจฎเฉˆเจก เจ•เฉฐเจŸเฉ‡เจจเจฐ เจ†เจฐเจ•เฉˆเจธเจŸเจฐเฉ‡เจŸเจฐ เจ…เจคเฉ‡ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจนเจฟเฉฑเจธเจฟเจ†เจ‚ - เจ•เฉŒเจ‚เจธเจฒ เจ…เจคเฉ‡ เจตเจพเจฒเจŸ เจฒเจˆ เจฎเฉŒเจœเฉ‚เจฆเจพ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจขเจพเจ‚เจšเจพ เจนเฉˆเฅค เจ‡เจธ เจฒเจˆ, เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจˆเจœเจผเฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจธเฉฐเจชเฉ‚เจฐเจจ เจนเฉฑเจฒ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจฏเฉ‚เจจเฉ€เจซเจพเจˆเจก เจตเจฟเจงเฉ€ เจตเจœเฉ‹เจ‚ เจšเฉเจฃเจฟเจ† เจ—เจฟเจ† เจธเฉ€เฅค เจ•เจฟเจ‰เจ‚เจ•เจฟ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจขเจพเจ‚เจšเฉ‡ เจตเจฟเฉฑเจš เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจธเจฐเจตเจฐ เจ•เฉ‹เจฐ OS เจธเฉฐเจธเจ•เจฐเจฃ 1803 เจ…เจคเฉ‡ 1809 เจฆเฉ‡ เจจเจพเจฒ เจกเฉŒเจ•เจฐ เจนเฉ‹เจธเจŸ เจธเจผเจพเจฎเจฒ เจนเจจ, 1803 เจ…เจคเฉ‡ 1809 เจฒเจˆ เจกเฉŒเจ•เจฐ เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจฆเฉ‡ เจตเฉฑเจ–เจฐเฉ‡ เจธเฉฐเจธเจ•เจฐเจฃเจพเจ‚ เจจเฉ‚เฉฐ เจฌเจฃเจพเจ‰เจฃเจพ เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉˆเฅค เจธเฉฐเจธเจ•เจฐเจฃ 1803 เจตเจฟเฉฑเจš, เจ‡เจน เจฏเจพเจฆ เจฐเฉฑเจ–เจฃเจพ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจนเฉˆ เจ•เจฟ เจฌเจฟเจฒเจก เจกเฉŒเจ•เจฐ เจนเฉ‹เจธเจŸ เจฆเจพ เจธเฉฐเจธเจผเฉ‹เจงเจจ เจจเฉฐเจฌเจฐ เจฌเฉ‡เจธ เจกเฉŒเจ•เจฐ เจšเจฟเฉฑเจคเจฐ เจฆเฉ‡ เจธเฉฐเจธเจผเฉ‹เจงเจจ เจจเฉฐเจฌเจฐ เจ…เจคเฉ‡ เจนเฉ‹เจธเจŸ เจจเจพเจฒ เจฎเฉ‡เจฒ เจ–เจพเจ‚เจฆเจพ เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจœเจฟเฉฑเจฅเฉ‡ เจ‡เจธ เจšเจฟเฉฑเจคเจฐ เจคเฉ‹เจ‚ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจฒเจพเจ‚เจš เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพเฅค เจธเฉฐเจธเจ•เจฐเจฃ 1809 เจตเจฟเฉฑเจš เจ…เจœเจฟเจนเฉ€ เจ•เฉ‹เจˆ เจ•เจฎเฉ€ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจคเฉเจธเฉ€เจ‚ เจนเฉ‹เจฐ เจชเฉœเฉเจน เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ‡เฉฑเจฅเฉ‡.

เจฌเจนเฉ-เจชเฉœเจพเจ… เจ•เจฟเจ‰เจ‚?

เจกเจฟเจตเฉˆเจฒเจชเจฎเฉˆเจ‚เจŸ เจŸเฉ€เจฎ เจฆเฉ‡ เจ‡เฉฐเจœเฉ€เจจเฉ€เจ…เจฐเจพเจ‚ เจ•เฉ‹เจฒ เจฎเฉ‡เจœเจผเจฌเจพเจจเจพเจ‚ เจจเฉ‚เฉฐ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจ•เฉ‹เจˆ เจœเจพเจ‚ เจฌเจนเฉเจค เจธเฉ€เจฎเจค เจชเจนเฉเฉฐเจš เจจเจนเฉ€เจ‚ เจนเฉˆ; เจ‡เจนเจจเจพเจ‚ เจฎเฉ‡เจœเจผเจฌเจพเจจเจพเจ‚ 'เจคเฉ‡ เจ‡เฉฑเจ• เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจญเจพเจ—เจพเจ‚ เจฆเฉ‡ เจธเจฎเฉ‚เจน เจจเฉ‚เฉฐ เจคเฉ‡เจœเจผเฉ€ เจจเจพเจฒ เจชเฉเจฐเจฌเฉฐเจงเจฟเจค เจ•เจฐเจจ เจฆเจพ เจ•เฉ‹เจˆ เจคเจฐเฉ€เจ•เจพ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจตเจฟเจœเจผเฉ‚เจ…เจฒ เจธเจŸเฉ‚เจกเฉ€เจ“ เจฒเจˆ เจ‡เฉฑเจ• เจตเจพเจงเฉ‚ เจŸเฉ‚เจฒเจธเฉˆเฉฑเจŸ เจœเจพเจ‚ เจตเจฐเจ•เจฒเฉ‹เจก เจธเจฅเจพเจชเจค เจ•เจฐเฉ‹เฅค เจ‡เจธ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจฌเจฟเจฒเจก เจกเฉŒเจ•เจฐ เจšเจฟเฉฑเจคเจฐ เจตเจฟเฉฑเจš เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจธเจพเจฐเฉ‡ เจญเจพเจ—เจพเจ‚ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจจ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ เจนเฉˆเฅค เจœเฉ‡ เจœเจฐเฉ‚เจฐเฉ€ เจนเฉ‹เจตเฉ‡, เจคเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจธเจฟเจฐเจซ เจกเฉŒเจ•เจฐเจซเจพเจˆเจฒ เจจเฉ‚เฉฐ เจคเฉเจฐเฉฐเจค เจฌเจฆเจฒ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ…เจคเฉ‡ เจ‡เจธ เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจชเจพเจˆเจชเจฒเจพเจˆเจจ เจฒเจพเจ‚เจš เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค

เจฅเจฟเจŠเจฐเฉ€ เจคเฉ‹เจ‚ เจเจ•เจธเจผเจจ เจคเฉฑเจ•

เจ‡เฉฑเจ• เจ†เจฆเจฐเจธเจผ เจกเฉŒเจ•เจฐ เจฎเจฒเจŸเฉ€-เจธเจŸเฉ‡เจœ เจšเจฟเฉฑเจคเจฐ เจฌเจฟเจฒเจก เจตเจฟเฉฑเจš, เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจตเจพเจคเจพเจตเจฐเจฃ เจ‰เจธเฉ‡ เจกเฉŒเจ•เจฐเจซเจพเจˆเจฒ เจธเจ•เฉเจฐเจฟเจชเจŸ เจตเจฟเฉฑเจš เจคเจฟเจ†เจฐ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ–เฉเจฆ เจฌเจฃเจพเจˆ เจ—เจˆ เจนเฉˆเฅค เจชเจฐ เจธเจพเจกเฉ‡ เจ•เฉ‡เจธ เจตเจฟเฉฑเจš, เจ‡เฉฑเจ• เจตเจฟเจšเจ•เจพเจฐเจฒเจพ เจฒเจฟเฉฐเจ• เจœเฉ‹เฉœเจฟเจ† เจ—เจฟเจ† เจธเฉ€, เจ…เจฐเจฅเจพเจค, เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€ เจนเจฐ เจšเฉ€เจœเจผ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจกเฉŒเจ•เจฐ เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‰เจฃ เจฆเจพ เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจ•เจฆเจฎ. เจ‡เจน เจ‡เจธ เจฒเจˆ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจฎเฉˆเจ‚ เจธเจพเจฐเฉ€เจ†เจ‚ เจจเจฟเจฐเจญเจฐเจคเจพเจตเจพเจ‚ เจฆเฉ‡ เจ‡เฉฐเจธเจŸเจพเจฒเฉ‡เจธเจผเจจ เจธเจฎเฉ‡เจ‚ เจจเฉ‚เฉฐ เจ˜เจŸเจพเจ‰เจฃ เจฒเจˆ เจกเฉŒเจ•เจฐ เจ•เฉˆเจธเจผ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเจพ เจธเฉ€.

เจ†เจ‰ เจ‡เจธ เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจกเฉŒเจ•เจฐเจซเจพเจˆเจฒ เจธเจ•เฉเจฐเจฟเจชเจŸ เจฆเฉ‡ เจฎเฉเฉฑเจ– เจฌเจฟเฉฐเจฆเฉ‚เจ†เจ‚ เจจเฉ‚เฉฐ เจตเฉ‡เจ–เฉ€เจเฅค

เจตเฉฑเจ–-เจตเฉฑเจ– OS เจธเฉฐเจธเจ•เจฐเจฃเจพเจ‚ เจฆเฉ€เจ†เจ‚ เจคเจธเจตเฉ€เจฐเจพเจ‚ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ, เจคเฉเจธเฉ€เจ‚ เจกเฉŒเจ•เจฐเจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ†เจฐเจ—เฉ‚เจฎเฉˆเจ‚เจŸ เจจเฉ‚เฉฐ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจœเจฟเจธ เจฐเจพเจนเฉ€เจ‚ เจธเฉฐเจธเจ•เจฐเจฃ เจจเฉฐเจฌเจฐ เจฌเจฟเจฒเจก เจฆเฉ‡ เจฆเฉŒเจฐเจพเจจ เจชเจพเจธ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจ‡เจน เจฌเฉ‡เจธ เจšเจฟเฉฑเจคเจฐ เจฆเจพ เจŸเฉˆเจ— เจตเฉ€ เจนเฉˆเฅค

เจฎเจพเจˆเจ•เฉเจฐเฉ‹เจธเจพเจซเจŸ เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจธเจฐเจตเจฐ เจšเจฟเฉฑเจคเจฐ เจŸเฉˆเจ—เจธ เจฆเฉ€ เจ‡เฉฑเจ• เจชเฉ‚เจฐเฉ€ เจธเฉ‚เจšเฉ€ เจฒเฉฑเจญเฉ€ เจœเจพ เจธเจ•เจฆเฉ€ เจนเฉˆ เจ‡เฉฑเจฅเฉ‡.

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

เจฎเฉ‚เจฒ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจจเจฟเจฐเจฆเฉ‡เจธเจผเจพเจ‚ เจตเจฟเฉฑเจš เจ•เจฎเจพเจ‚เจกเจพเจ‚ RUN เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจ“เจเจธ 'เจคเฉ‡ เจกเฉŒเจ•เจฐเจซเจพเจˆเจฒ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจ‰เจน cmd.exe เจ•เฉฐเจธเฉ‹เจฒ เจตเจฟเฉฑเจš เจšเจฒเจพเจ‡เจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจฟเจ–เจฃ เจ…เจคเฉ‡ เจตเจฐเจคเฉ€เจ†เจ‚ เจ—เจˆเจ†เจ‚ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจฆเฉ€ เจ•เจพเจฐเจœเจ•เฉเจธเจผเจฒเจคเจพ เจจเฉ‚เฉฐ เจตเจงเจพเจ‰เจฃ เจฆเฉ€ เจธเจนเฉ‚เจฒเจค เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจจเจฟเจฐเจฆเฉ‡เจธเจผ เจฆเฉเจ†เจฐเจพ Powershell เจตเจฟเฉฑเจš เจ•เจฎเจพเจ‚เจก เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจ•เฉฐเจธเฉ‹เจฒ เจจเฉ‚เฉฐ เจฎเฉเฉœ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค 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 เจซเจพเจฐเจฎเฉˆเจŸ เจตเจฟเฉฑเจš เจ•เฉŒเจ‚เจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ เจซเจพเจˆเจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ†เจชเจฃเฉ‡ เจ†เจช เจŸเฉ‚เจฒเจธ เจฆเฉ‡ เจ‡เฉฑเจ• เจตเจฟเจธเจคเฉเจฐเจฟเจค เจธเฉˆเฉฑเจŸ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจธเฉฐเจฐเจšเจจเจพ เจซเจพเจ‡เจฒ เจธเจฎเฉฑเจ—เจฐเฉ€:

เจ‰เจชเจฒเจฌเจง เจญเจพเจ—เจพเจ‚ เจฆเฉ€ เจชเฉ‚เจฐเฉ€ เจธเฉ‚เจšเฉ€ เจฆเจธเจคเจพเจตเฉ‡เจœเจผ เจธเจพเจˆเจŸ 'เจคเฉ‡ เจชเจพเจˆ เจœเจพ เจธเจ•เจฆเฉ€ เจนเฉˆ Microsoft Visual Studio.

{
  "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.

เจธเจฟเฉฑเจŸเจพ

เจ‡เจธ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš, เจฎเฉˆเจ‚ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เฉ€เจคเฉ€ เจธเฉ€ เจ•เจฟ เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจฆเฉ‡ เจ…เจงเฉ€เจจ เจ‡เฉฑเจ• เจ•เฉฐเจŸเฉ‡เจจเจฐ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ C++ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจฒเจˆ เจ‡เฉฑเจ• เจธเฉฐเจชเฉ‚เจฐเจจ เจธเฉฐเจ•เจฒเจจ เจตเจพเจคเจพเจตเจฐเจฃ เจ•เจฟเจตเฉ‡เจ‚ เจฌเจฃเจพเจ‡เจ† เจœเจพเจตเฉ‡ เจ…เจคเฉ‡ เจธเจพเจกเฉ€ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ€เจ†เจ‚ เจชเฉ‚เจฐเฉ€เจ†เจ‚ เจคเจธเจตเฉ€เจฐเจพเจ‚ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจกเฉŒเจ•เจฐ เจฎเจฒเจŸเฉ€-เจธเจŸเฉ‡เจœ เจฌเจฟเจฒเจกเจธ เจฆเฉ€เจ†เจ‚ เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฟเจตเฉ‡เจ‚ เจ•เฉ€เจคเฉ€ เจœเจพเจตเฉ‡เฅค

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹