рд╡рд┐рдВрдбреЛ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдбреЙрдХрд░ рдорд▓реНрдЯреА-рд╕реНрдЯреЗрдЬ рд╡рд╛рдкрд░рдгреЗ

рд╕рд░реНрд╡рд╛рдВрдирд╛ рдирдорд╕реНрдХрд╛рд░! рдорд╛рдЭреЗ рдирд╛рд╡ рдЖрдВрджреНрд░реЗ рдЖрд╣реЗ рдЖрдгрд┐ рдореА рдбреЗрд╡реНрд╣рд▓рдкрдореЗрдВрдЯ рдЯреАрдордордзреНрдпреЗ Exness рдпреЗрдереЗ DevOps рдЕрднрд┐рдпрдВрддрд╛ рдореНрд╣рдгреВрди рдХрд╛рдо рдХрд░рддреЛ. рдорд╛рдЭреА рдореБрдЦреНрдп рдХреНрд░рд┐рдпрд╛рдХрд▓рд╛рдк рд▓рд┐рдирдХреНрд╕ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯреАрдо (рдпрд╛рдкреБрдвреЗ OS рдореНрд╣рдгреВрди рд╕рдВрджрд░реНрднрд┐рдд) рдЕрдВрддрд░реНрдЧрдд рдбреЙрдХрд░рдордзреНрдпреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддрдпрд╛рд░ рдХрд░рдгреЗ, рдЙрдкрдпреЛрдЬрд┐рдд рдХрд░рдгреЗ рдЖрдгрд┐ рд╕рдорд░реНрдерди рджреЗрдгреЗ рдпрд╛рд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╣реЗ. рдХрд╛рд╣реА рдХрд╛рд│рд╛рдкреВрд░реНрд╡реА рдорд╛рдЭреНрдпрд╛рдХрдбреЗ рд╕рдорд╛рди рдХреНрд░рд┐рдпрд╛рдХрд▓рд╛рдкрд╛рдВрд╕рд╣ рдПрдХ рдХрд╛рд░реНрдп рд╣реЛрддреЗ, рдкрд░рдВрддреБ рдкреНрд░рдХрд▓реНрдкрд╛рдЪреЗ рд▓рдХреНрд╖реНрдп OS рд╡рд┐рдВрдбреЛрдЬ рд╕рд░реНрд╡реНрд╣рд░ рдЖрдгрд┐ C++ рдкреНрд░рдХрд▓реНрдкрд╛рдВрдЪрд╛ рдПрдХ рд╕рдВрдЪ рд╣реЛрддрд╛. рдорд╛рдЭреНрдпрд╛рд╕рд╛рдареА, рд╡рд┐рдВрдбреЛрдЬ рдУрдПрд╕ рдЕрдВрддрд░реНрдЧрдд рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░рд╕рд╣ рдЖрдгрд┐ рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, C++ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдВрд╕рд╣ рд╣рд╛ рдкрд╣рд┐рд▓рд╛ рдЬрд╡рд│рдЪрд╛ рд╕рдВрд╡рд╛рдж рд╣реЛрддрд╛. рдпрд╛рдмрджреНрджрд▓ рдзрдиреНрдпрд╡рд╛рдж, рдорд▓рд╛ рдПрдХ рдордиреЛрд░рдВрдЬрдХ рдЕрдиреБрднрд╡ рдЖрд▓рд╛ рдЖрдгрд┐ рд╡рд┐рдВрдбреЛрдЬрдордзреАрд▓ рдХрдВрдЯреЗрдирд░рд┐рдВрдЧ рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рдЪреНрдпрд╛ рдХрд╛рд╣реА рдЧреБрдВрддрд╛рдЧреБрдВрддреАрдмрджреНрджрд▓ рд╢рд┐рдХрд▓реЛ.

рд╡рд┐рдВрдбреЛ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдбреЙрдХрд░ рдорд▓реНрдЯреА-рд╕реНрдЯреЗрдЬ рд╡рд╛рдкрд░рдгреЗ

рдпрд╛ рд▓реЗрдЦрд╛рдд рдореА рддреБрдореНрд╣рд╛рд▓рд╛ рд╕рд╛рдВрдЧреВ рдЗрдЪреНрдЫрд┐рддреЛ рдХреА рдорд▓рд╛ рдХреЛрдгрддреНрдпрд╛ рдЕрдбрдЪрдгреАрдВрдЪрд╛ рд╕рд╛рдордирд╛ рдХрд░рд╛рд╡рд╛ рд▓рд╛рдЧрд▓рд╛ рдЖрдгрд┐ рдореА рддреНрдпрд╛рдВрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд╕реЗ рдХреЗрд▓реЗ. рдорд▓рд╛ рдЖрд╢рд╛ рдЖрд╣реЗ рдХреА рд╣реЗ рддреБрдордЪреНрдпрд╛ рд╡рд░реНрддрдорд╛рди рдЖрдгрд┐ рднрд╡рд┐рд╖реНрдпрд╛рддреАрд▓ рдЖрд╡реНрд╣рд╛рдирд╛рдВрд╕рд╛рдареА рдЙрдкрдпреБрдХреНрдд рдЖрд╣реЗ. рд╡рд╛рдЪрдирд╛рдЪрд╛ рдЖрдирдВрдж рдШреНрдпрд╛!

рдХрдВрдЯреЗрдирд░ рдХрд╛?

рдХрдВрдкрдиреАрдХрдбреЗ Hashicorp Nomad рдХрдВрдЯреЗрдирд░ рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрдЯрд░ рдЖрдгрд┐ рд╕рдВрдмрдВрдзрд┐рдд рдШрдЯрдХрд╛рдВрд╕рд╛рдареА рд╡рд┐рджреНрдпрдорд╛рди рдкрд╛рдпрд╛рднреВрдд рд╕реБрд╡рд┐рдзрд╛ рдЖрд╣реЗрдд - рдХреЙрдиреНрд╕реБрд▓ рдЖрдгрд┐ рд╡реНрд╣реЙрд▓реНрдЯ. рдореНрд╣рдгреВрди, рд╕рдВрдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рд╡рд┐рддрд░реАрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрдВрдЯреЗрдирд░рд╛рдпрдЭреЗрд╢рди рдПрдХ рдПрдХреАрдХреГрдд рдкрджреНрдзрдд рдореНрд╣рдгреВрди рдирд┐рд╡рдбрд▓реЗ рдЧреЗрд▓реЗ. рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░рдордзреНрдпреЗ Windows Server Core OS рдЖрд╡реГрддреНрддреНрдпрд╛ 1803 рдЖрдгрд┐ 1809 рд╕рд╣ рдбреЙрдХрд░ рд╣реЛрд╕реНрдЯ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЕрд╕рд▓реНрдпрд╛рдиреЗ, 1803 рдЖрдгрд┐ 1809 рд╕рд╛рдареА рдбреЙрдХрд░ рдкреНрд░рддрд┐рдорд╛рдВрдЪреНрдпрд╛ рд╕реНрд╡рддрдВрддреНрд░ рдЖрд╡реГрддреНрддреНрдпрд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЖрд╡реГрддреНрддреА 1803 рдордзреНрдпреЗ, рд╣реЗ рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рдгреЗ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рдЖрд╣реЗ рдХреА рдмрд┐рд▓реНрдб рдбреЙрдХрд░ рд╣реЛрд╕реНрдЯрдЪрд╛ рдкреБрдирд░рд╛рд╡реГрддреНрддреА рдХреНрд░рдорд╛рдВрдХ рдмреЗрд╕ рдбреЙрдХрд░ рдкреНрд░рддрд┐рдореЗрдЪрд╛ рдкреБрдирд░рд╛рд╡реГрддреНрддреА рдХреНрд░рдорд╛рдВрдХ рдЖрдгрд┐ рдпрд╛ рдкреНрд░рддрд┐рдореЗрдЪрд╛ рдХрдВрдЯреЗрдирд░ рдЬреЗрдереЗ рд▓рд╛рдБрдЪ рдХреЗрд▓рд╛ рдЬрд╛рдИрд▓ рддреНрдпрд╛ рд╣реЛрд╕реНрдЯрд╢реА рдЬреБрд│рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЖрд╡реГрддреНрддреА 1809 рдордзреНрдпреЗ рдЕрд╢реА рдХреЛрдгрддреАрд╣реА рдХрдорддрд░рддрд╛ рдирд╛рд╣реА. рдЖрдкрдг рдЕрдзрд┐рдХ рд╡рд╛рдЪреВ рд╢рдХрддрд╛ рдпреЗрдереЗ.

рдорд▓реНрдЯреА-рд╕реНрдЯреЗрдЬ рдХрд╛?

рдбреЗрд╡реНрд╣рд▓рдкрдореЗрдВрдЯ рдЯреАрдо рдЗрдВрдЬрд┐рдиреАрдЕрд░реНрд╕рдирд╛ рд╣реЛрд╕реНрдЯ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреЛрдгрддрд╛рд╣реА рдХрд┐рдВрд╡рд╛ рдЦреВрдк рдорд░реНрдпрд╛рджрд┐рдд рдкреНрд░рд╡реЗрд╢ рдирд╛рд╣реА; рдпрд╛ рд╣реЛрд╕реНрдЯреНрд╕рд╡рд░ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдШрдЯрдХрд╛рдВрдЪрд╛ рд╕рдВрдЪ рджреНрд░реБрддрдкрдгреЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рдЪрд╛ рдХреЛрдгрддрд╛рд╣реА рдорд╛рд░реНрдЧ рдирд╛рд╣реА, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд╡реНрд╣рд┐рдЬреНрдпреБрдЕрд▓ рд╕реНрдЯреБрдбрд┐рдУрд╕рд╛рдареА рдЕрддрд┐рд░рд┐рдХреНрдд рдЯреВрд▓рд╕реЗрдЯ рдХрд┐рдВрд╡рд╛ рд╡рд░реНрдХрд▓реЛрдб рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛. рдореНрд╣рдгреВрди, рдЖрдореНрд╣реА рдмрд┐рд▓реНрдб рдбреЙрдХрд░ рдЗрдореЗрдЬрдордзреНрдпреЗ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реЗ рд╕рд░реНрд╡ рдШрдЯрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рдЪрд╛ рдирд┐рд░реНрдгрдп рдШреЗрддрд▓рд╛. рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реНрдпрд╛рд╕, рдЖрдкрдг рддреНрд╡рд░реАрдд рдлрдХреНрдд рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдмрджрд▓реВ рд╢рдХрддрд╛ рдЖрдгрд┐ рд╣реА рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд▓рд╛рдБрдЪ рдХрд░реВ рд╢рдХрддрд╛.

рд╕рд┐рджреНрдзрд╛рдВрддрд╛рдкрд╛рд╕реВрди рдХреГрддреАрдкрд░реНрдпрдВрдд

рдЖрджрд░реНрд╢ рдбреЙрдХрд░ рдорд▓реНрдЯреА-рд╕реНрдЯреЗрдЬ рдЗрдореЗрдЬ рдмрд┐рд▓реНрдбрдордзреНрдпреЗ, рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареАрдЪреЗ рд╡рд╛рддрд╛рд╡рд░рдг рддреНрдпрд╛рдЪ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдордзреНрдпреЗ рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЬрд╛рддреЗ рдЬреНрдпрд╛рдкреНрд░рдорд╛рдгреЗ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрд╡рддрдГ рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЬрд╛рддреЗ. рдкрд░рдВрддреБ рдЖрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд, рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рджреБрд╡рд╛ рдЬреЛрдбрд▓рд╛ рдЧреЗрд▓рд╛ рдЖрд╣реЗ, рдореНрд╣рдгрдЬреЗ, рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕рд░реНрд╡ рдЧреЛрд╖реНрдЯреАрдВрд╕рд╣ рдбреЙрдХрд░ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреА рдкреНрд░рд╛рдердорд┐рдХ рдкрд╛рдпрд░реА. рд╣реЗ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдХрд╛рд░рдг рдорд▓рд╛ рд╕рд░реНрд╡ рдЕрд╡рд▓рдВрдмрдирд╛рдВрдЪреА рд╕реНрдерд╛рдкрдирд╛ рд╡реЗрд│ рдХрдореА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдбреЙрдХрд░ рдХреЕрд╢реЗ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рд╡рд╛рдкрд░рд╛рдпрдЪреЗ рд╣реЛрддреЗ.

рд╣реА рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдбреЙрдХрд░рдлрд╛рдЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдЪреЗ рдореБрдЦреНрдп рдореБрджреНрджреЗ рдкрд╛рд╣реВ.

рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ OS рдЖрд╡реГрддреНрддреНрдпрд╛рдВрдЪреНрдпрд╛ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣реА рдбреЙрдХрд░рдлрд╛рдЗрд▓рдордзреНрдпреЗ рдПрдХ рдпреБрдХреНрддрд┐рд╡рд╛рдж рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реВ рд╢рдХрддрд╛ рдЬреНрдпрд╛рджреНрд╡рд╛рд░реЗ рдмрд┐рд▓реНрдб рджрд░рдореНрдпрд╛рди рдЖрд╡реГрддреНрддреА рдХреНрд░рдорд╛рдВрдХ рдкрд╛рд╕ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ рдЖрдгрд┐ рддреЛ рдореВрд│ рдкреНрд░рддрд┐рдореЗрдЪрд╛ рдЯреЕрдЧ рджреЗрдЦреАрд▓ рдЖрд╣реЗ.

рдорд╛рдпрдХреНрд░реЛрд╕реЙрдлреНрдЯ рд╡рд┐рдВрдбреЛрдЬ рд╕рд░реНрд╡реНрд╣рд░ рдЗрдореЗрдЬ рдЯреЕрдЧрдЪреА рд╕рдВрдкреВрд░реНрдг рдпрд╛рджреА рдЖрдврд│реВ рд╢рдХрддреЗ рдпреЗрдереЗ.

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

рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдордзреАрд▓ рдЖрджреЗрд╢ RUN Windows OS рд╡рд░реАрд▓ рдбреЙрдХрд░рдлрд╛рдЗрд▓рдЪреНрдпрд╛ рдЖрдд рддреЗ 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 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.

рдирд┐рд╖реНрдХрд░реНрд╖

рдпрд╛ рд▓реЗрдЦрд╛рдд, рдореА Windows рдЕрдВрддрд░реНрдЧрдд рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ C++ рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рд╕рд╛рдареА рд╕рдВрдкреВрд░реНрдг рд╕рдВрдХрд▓рди рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╕реЗ рддрдпрд╛рд░ рдХрд░рд╛рд╡реЗ рдЖрдгрд┐ рдЖрдордЪреНрдпрд╛ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирдЪреНрдпрд╛ рдкреВрд░реНрдг рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдбреЙрдХрд░ рдорд▓реНрдЯреА-рд╕реНрдЯреЗрдЬ рдмрд┐рд▓реНрдбреНрд╕рдЪреА рдХреНрд╖рдорддрд╛ рдХрд╢реА рд╡рд╛рдкрд░рд╛рд╡реА рдпрд╛рдмрджреНрджрд▓ рдмреЛрд▓рд▓реЛ.

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛