рд╕рдмреИрд▓рд╛рдИ рдирдорд╕реНрддреЗ! рдореЗрд░реЛ рдирд╛рдо рдПрдиреНрдбреНрд░реЗ рд╣реЛ, рд░ рдо Exness рдорд╛ рд╡рд┐рдХрд╛рд╕ рдЯреЛрд▓реАрдорд╛ DevOps рдЗрдиреНрдЬрд┐рдирд┐рдпрд░рдХреЛ рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░реНрдЫреБред рдореЗрд░реЛ рдкреНрд░рд╛рдердорд┐рдХ рдзреНрдпрд╛рди рдЕрдкрд░реЗрдЯрд┐рдЩ рд╕рд┐рд╕реНрдЯрдордорд╛ рдЪрд▓реНрдиреЗ рдбрдХрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдирд┐рд░реНрдорд╛рдг, рддреИрдирд╛рде рд░ рдорд░реНрдордд рдЧрд░реНрдиреБ рд╣реЛред Linux (рдпрд╕рдкрдЫрд┐ OS рднрдиреЗрд░ рдЙрд▓реНрд▓реЗрдЦ рдЧрд░рд┐рдПрдХреЛ рдЫ)ред рдХреЗрд╣реА рд╕рдордп рдЕрдШрд┐, рдореЗрд░реЛ рдкрдирд┐ рддреНрдпрд╕реНрддреИ рдЧрддрд┐рд╡рд┐рдзрд┐рд╣рд░реВ рднрдПрдХреЛ рдПрдЙрдЯрд╛ рдХрд╛рдо рдерд┐рдпреЛ, рддрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд▓рдХреНрд╖рд┐рдд OS рдмрдиреНрдпреЛ Windows Server ╨╕ ╨╜╨░╨▒╨╛╤А ╨┐╤А╨╛╨╡╨║╤В╨╛╨▓ ╨╜╨░ C++. ╨Ф╨╗╤П ╨╝╨╡╨╜╤П ╤Н╤В╨╛ ╨▒╤Л╨╗╨╛ ╨┐╨╡╤А╨▓╨╛╨╡ ╨┐╨╗╨╛╤В╨╜╨╛╨╡ ╨▓╨╖╨░╨╕╨╝╨╛╨┤╨╡╨╣╤Б╤В╨▓╨╕╨╡ c docker ╨║╨╛╨╜╤В╨╡╨╣╨╜╨╡╤А╨░╨╝╨╕ ╨┐╨╛╨┤ ╨Ю╨б Windows ╨╕ ╨▓ ╤Ж╨╡╨╗╨╛╨╝ ╤Б ╨┐╤А╨╕╨╗╨╛╨╢╨╡╨╜╨╕╤П╨╝╨╕ ╨╜╨░ C++. ╨С╨╗╨░╨│╨╛╨┤╨░╤А╤П ╤Н╤В╨╛╨╝╤Г ╤П ╨┐╨╛╨╗╤Г╤З╨╕╨╗ ╨╕╨╜╤В╨╡╤А╨╡╤Б╨╜╤Л╨╣ ╨╛╨┐╤Л╤В ╨╕ ╤Г╨╖╨╜╨░╨╗ ╨╛ ╨╜╨╡╨║╨╛╤В╨╛╤А╤Л╤Е ╤В╨╛╨╜╨║╨╛╤Б╤В╤П╤Е ╨║╨╛╨╜╤В╨╡╨╣╨╜╨╡╤А╨╕╨╖╨░╤Ж╨╕╨╕ ╨┐╤А╨╕╨╗╨╛╨╢╨╡╨╜╨╕╨╣ ╨▓ ╨Ю╨б Windows.

рдпрд╕ рд▓реЗрдЦрдорд╛ рдо рддрдкрд╛рдИрд▓рд╛рдИ рдмрддрд╛рдЙрди рдЪрд╛рд╣рдиреНрдЫреБ рдХрд┐ рдореИрд▓реЗ рдХрд╕реНрддрд╛ рдХрдард┐рдирд╛рдЗрд╣рд░реВрдХреЛ рд╕рд╛рдордирд╛ рдЧрд░реНрдиреБрдкрд░реЗрдХреЛ рдерд┐рдпреЛ рд░ рдореИрд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдХрд╕рд░реА рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рд╕рдХреЗрдВред рдорд▓рд╛рдИ рдЖрд╢рд╛ рдЫ рдХрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдпреЛ рддрдкрд╛рдИрдВрдХреЛ рд╡рд░реНрддрдорд╛рди рд░ рднрд╡рд┐рд╖реНрдпрдХрд╛ рдЪреБрдиреМрддреАрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЙрдкрдпреЛрдЧреА рдкрд╛рдЙрдиреБрднрдпреЛред рдкрдвреЗрд░ рдЖрдирдиреНрдж рд▓рд┐рдиреБрд╣реЛрд╕реН!
рдХрд┐рди рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ?
╨Т ╨║╨╛╨╝╨┐╨░╨╜╨╕╨╕ ╨╡╤Б╤В╤М ╤Б╤Г╤Й╨╡╤Б╤В╨▓╤Г╤О╤Й╨░╤П ╨╕╨╜╤Д╤А╨░╤Б╤В╤А╤Г╨║╤В╤Г╤А╨░ ╨╛╤А╨║╨╡╤Б╤В╤А╨░╤В╨╛╤А╨░ ╨║╨╛╨╜╤В╨╡╨╣╨╜╨╡╤А╨╛╨▓ Hashicorp Nomad ╨╕ ╤Б╨▓╤П╨╖╨░╨╜╨╜╤Л╤Е ╨║╨╛╨╝╨┐╨╛╨╜╨╡╨╜╤В╨╛╨▓ тАФ Consul ╨╕ Vault. ╨Я╨╛╤Н╤В╨╛╨╝╤Г ╨║╨╛╨╜╤В╨╡╨╣╨╜╨╡╤А╨╕╨╖╨░╤Ж╨╕╤П ╨┐╤А╨╕╨╗╨╛╨╢╨╡╨╜╨╕╨╣ ╨▒╤Л╨╗╨░ ╨▓╤Л╨▒╤А╨░╨╜╨░ ╨║╨░╨║ ╤Г╨╜╨╕╤Д╨╕╤Ж╨╕╤А╨╛╨▓╨░╨╜╨╜╤Л╨╣ ╨╝╨╡╤В╨╛╨┤ ╨┤╨╛╤Б╤В╨░╨▓╨║╨╕ ╨│╨╛╤В╨╛╨▓╨╛╨│╨╛ ╤А╨╡╤И╨╡╨╜╨╕╤П. ╨в╨░╨║ ╨║╨░╨║ ╨▓ ╨╕╨╜╤Д╤А╨░╤Б╤В╤А╤Г╨║╤В╤Г╤А╨╡ ╨┐╤А╨╛╨╡╨║╤В╨░ ╨╕╨╝╨╡╤О╤В╤Б╤П docker-╤Е╨╛╤Б╤В╤Л ╤Б ╨▓╨╡╤А╤Б╨╕╤П╨╝╨╕ ╨Ю╨б Windows Server Core 1803 ╨╕ 1809, ╤В╨╛ ╨╜╨╡╨╛╨▒╤Е╨╛╨┤╨╕╨╝╨╛ ╤Б╨╛╨▒╨╕╤А╨░╤В╤М ╨╛╤В╨┤╨╡╨╗╤М╨╜╨╛ ╨▓╨╡╤А╤Б╨╕╨╕ docker-╨╛╨▒╤А╨░╨╖╨╛╨▓ ╨┤╨╗╤П 1803 ╨╕ 1809. ╨Т ╨▓╨╡╤А╤Б╨╕╨╕ 1803 ╨▓╨░╨╢╨╜╨╛ ╨┐╨╛╨╝╨╜╨╕╤В╤М ╨╛ ╤В╨╛╨╝, ╤З╤В╨╛ ╨╜╨╛╨╝╨╡╤А ╤А╨╡╨▓╨╕╨╖╨╕╨╕ ╤Б╨▒╨╛╤А╨╛╤З╨╜╨╛╨│╨╛ docker-╤Е╨╛╤Б╤В╨░ ╨┤╨╛╨╗╨╢╨╡╨╜ ╤Б╨╛╨▓╨┐╨░╨┤╨░╤В╤М ╤Б ╨╜╨╛╨╝╨╡╤А╨╛╨╝ ╤А╨╡╨▓╨╕╨╖╨╕╨╕ ╨▒╨░╨╖╨╛╨▓╨╛╨│╨╛ docker-╨╛╨▒╤А╨░╨╖╨░ ╨╕ ╤Е╨╛╤Б╤В╨░, ╨│╨┤╨╡ ╨║╨╛╨╜╤В╨╡╨╣╨╜╨╡╤А ╨╕╨╖ ╤Н╤В╨╛╨│╨╛ ╨╛╨▒╤А╨░╨╖╨░ ╨▒╤Г╨┤╨╡╤В ╨╖╨░╨┐╤Г╤Й╨╡╨╜. ╨Т╨╡╤А╤Б╨╕╤П 1809 ╨╗╨╕╤И╨╡╨╜╨░ ╤В╨░╨║╨╛╨│╨╛ ╨╜╨╡╨┤╨╛╤Б╤В╨░╤В╨║╨░. ╨Я╨╛╨┤╤А╨╛╨▒╨╜╨╡╨╡ ╨╝╨╛╨╢╨╜╨╛ ╨┐╤А╨╛╤З╨╕╤В╨░╤В╤М .
рдХрд┐рди рдмрд╣реБ-рдЪрд░рдг?
рд╡рд┐рдХрд╛рд╕ рдЯреЛрд▓реА рдИрдиреНрдЬрд┐рдирд┐рдпрд░рд╣рд░реВрд╕рдБрдЧ рд╣реЛрд╕реНрдЯрд╣рд░реВ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдХреБрдиреИ рд╡рд╛ рдзреЗрд░реИ рд╕реАрдорд┐рдд рдкрд╣реБрдБрдЪ рдЫреИрди; рдпреА рд╣реЛрд╕реНрдЯрд╣рд░реВрдорд╛ рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВрдХреЛ рд╕реЗрдЯ рджреНрд░реБрдд рд░реВрдкрдорд╛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧрд░реНрдиреЗ рдХреБрдиреИ рддрд░рд┐рдХрд╛ рдЫреИрди, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рднрд┐рдЬреБрдЕрд▓ рд╕реНрдЯреБрдбрд┐рдпреЛрдХреЛ рд▓рд╛рдЧрд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрдкрдХрд░рдгрд╕реЗрдЯ рд╡рд╛ рдХрд╛рд░реНрдпрднрд╛рд░ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рддреНрдпрд╕рдХрд╛рд░рдг, рд╣рд╛рдореАрд▓реЗ рдмрд┐рд▓реНрдб рдбрдХрд░ рдЫрд╡рд┐рдорд╛ рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рд╕рдмреИ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реНрдпреМрдВред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рдЪрд╛рдБрдбреИ рдорд╛рддреНрд░ рдбрдХрд░рдлрд╛рдЗрд▓ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд░ рдпреЛ рдЫрд╡рд┐ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╕реБрд░реБ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
рд╕рд┐рджреНрдзрд╛рдиреНрдд рджреЗрдЦрд┐ рдХрд╛рд░реНрдп рд╕рдореНрдо
рдПрдХ рдЖрджрд░реНрд╢ рдбрдХрд░ рдмрд╣реБ-рдЪрд░рдг рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдгрдорд╛, рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдирд┐рд░реНрдорд╛рдгрдХреЛ рд▓рд╛рдЧрд┐ рд╡рд╛рддрд╛рд╡рд░рдг рдПрдЙрдЯреИ рдбрдХрд░рдлрд╛рдЗрд▓ рд▓рд┐рдкрд┐рдорд╛ рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдЖрдлреИрдВ рдирд┐рд░реНрдорд╛рдг рдЧрд░рд┐рдПрдХреЛ рд░реВрдкрдорд╛ рддрдпрд╛рд░ рд╣реБрдиреНрдЫред рддрд░ рд╣рд╛рдореНрд░реЛ рдХреЗрд╕рдорд╛, рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рд▓рд┐рдЩреНрдХ рдердкрд┐рдПрдХреЛ рдерд┐рдпреЛ, рдЕрд░реНрдерд╛рддреН, рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рд╕рдмреИ рдЪреАрдЬрдХреЛ рд╕рд╛рде рдбрдХрд░ рдЫрд╡рд┐ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗ рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рдЪрд░рдгред рдпреЛ рдЧрд░рд┐рдпреЛ рдХрд┐рдирднрдиреЗ рдо рд╕рдмреИ рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВрдХреЛ рд╕реНрдерд╛рдкрдирд╛ рд╕рдордп рдХрдо рдЧрд░реНрди рдбрдХрд░ рдХреНрдпрд╛рд╕ рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдереЗред
рдпреЛ рдЫрд╡рд┐ рдмрдирд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдбрдХрд░рдлрд╛рдЗрд▓ рд▓рд┐рдкрд┐рдХреЛ рдореБрдЦреНрдп рдмрд┐рдиреНрджреБрд╣рд░реВ рд╣реЗрд░реМрдВред
рдмрд┐рднрд┐рдиреНрди OS рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВрдХреЛ рдЫрд╡рд┐рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди, рддрдкрд╛рдИрдВрд▓реЗ рдбрдХрд░рдлрд╛рдЗрд▓рдорд╛ рдПрдЙрдЯрд╛ рддрд░реНрдХ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдЬрд╕рдХреЛ рдорд╛рдзреНрдпрдордмрд╛рдЯ рд╕рдВрд╕реНрдХрд░рдг рдирдореНрдмрд░ рдирд┐рд░реНрдорд╛рдгрдХреЛ рдХреНрд░рдордорд╛ рдкрд╛рд╕ рд╣реБрдиреНрдЫ, рд░ рдпреЛ рдЖрдзрд╛рд░ рдЫрд╡рд┐рдХреЛ рдЯреНрдпрд╛рдЧ рдкрдирд┐ рд╣реЛред
╨Я╨╛╨╗╨╜╤Л╨╣ ╤Б╨┐╨╕╤Б╨╛╨║ ╤В╤Н╨│╨╛╨▓ ╨╛╨▒╤А╨░╨╖╨╛╨▓ Microsoft Windows Server рдкрд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ .
ARG WINDOWS_OS_VERSION=1809
FROM mcr.microsoft.com/windows/servercore:$WINDOWS_OS_VERSIONрдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВрдорд╛ рдЖрджреЗрд╢рд╣рд░реВ RUN ╨▓╨╜╤Г╤В╤А╨╕ dockerfile ╨▓ ╨Ю╨б Windows ╨▓╤Л╨┐╨╛╨╗╨╜╤П╤О╤В╤Б╤П ╨▓ ╨║╨╛╨╜╤Б╨╛╨╗╨╕ 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'chocolatey рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди, рддрдкрд╛рдИрдВрд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╕реВрдЪреАрдХреЛ рд░реВрдкрдорд╛ рдкрд╛рд╕ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рд╡рд╛ рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдкреНрдпрд╛рдХреЗрдЬрдХреЛ рд▓рд╛рдЧрд┐ рдЕрджреНрд╡рд┐рддреАрдп рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдкрд╛рд╕ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рднрдиреЗ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдПрдХ рдкрдЯрдХрдорд╛ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рд╣рд╛рдореНрд░реЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рд╣рд╛рдореАрд▓реЗ XML рдврд╛рдБрдЪрд╛рдорд╛ manifest рдлрд╛рдЗрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдпреМрдВ, рдЬрд╕рдорд╛ рдЖрд╡рд╢реНрдпрдХ рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВ рд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВрдХреЛ рд╕реВрдЪреА рд╕рдорд╛рд╡реЗрд╢ рдЫред рдпрд╕рдХреЛ рд╕рд╛рдордЧреНрд░реА рдпрд╕ рдкреНрд░рдХрд╛рд░ рджреЗрдЦрд┐рдиреНрдЫ:
<?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 Build Tools 2019 - рдпреЛ Visual Studio 2019 рдХреЛ рд╣рд▓реНрдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реЛ, рдЬрд╕рдорд╛ рдХрдореНрдкрд╛рдЗрд▓рд┐рдЩ рдХреЛрдбрдХрд╛ рд▓рд╛рдЧрд┐ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдиреЗ рдШрдЯрдХрд╣рд░реВрдХреЛ рдиреНрдпреВрдирддрдо рд╕реЗрдЯ рд╕рдорд╛рд╡реЗрд╢ рд╣реБрдиреНрдЫред
рд╣рд╛рдореНрд░реЛ C++ рдкрд░рд┐рдпреЛрдЬрдирд╛рд╕рдБрдЧ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░реНрди, рд╣рд╛рдореАрд▓рд╛рдИ рдердк рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рдЪрд╛рд╣рд┐рдиреНрдЫ, рдЕрд░реНрдерд╛рддреН:
- рдХрд╛рд░реНрдпрднрд╛рд░ C++ рдЙрдкрдХрд░рдгрд╣рд░реВ
- Toolset 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.
рдирд┐рд╖реНрдХрд░реНрд╖рдорд╛
╨Т ╤Н╤В╨╛╨╣ ╤Б╤В╨░╤В╤М╨╡ ╤П ╤А╨░╤Б╤Б╨║╨░╨╖╨░╨╗, ╨║╨░╨║ ╤Б╨╛╨╖╨┤╨░╤В╤М ╨┐╨╛╨╗╨╜╨╛╤Ж╨╡╨╜╨╜╤Г╤О ╤Б╤А╨╡╨┤╤Г ╨║╨╛╨╝╨┐╨╕╨╗╤П╤Ж╨╕╨╕ C++ ╨┐╤А╨╕╨╗╨╛╨╢╨╡╨╜╨╕╨╣ ╨▓╨╜╤Г╤В╤А╨╕ ╨║╨╛╨╜╤В╨╡╨╣╨╜╨╡╤А╨░ ╨┐╨╛╨┤ Windows ╨╕ ╨╛ ╤В╨╛╨╝, ╨║╨░╨║ ╨╕╤Б╨┐╨╛╨╗╤М╨╖╨╛╨▓╨░╤В╤М ╨▓╨╛╨╖╨╝╨╛╨╢╨╜╨╛╤Б╤В╨╕ docker multi-stage ╤Б╨▒╨╛╤А╨╛╨║ ╨┤╨╗╤П ╤Б╨╛╨╖╨┤╨░╨╜╨╕╤П ╨┐╨╛╨╗╨╜╨╛╤Ж╨╡╨╜╨╜╤Л╤Е ╨╛╨▒╤А╨░╨╖╨╛╨▓ ╨╜╨░╤И╨╡╨│╨╛ ╨┐╤А╨╕╨╗╨╛╨╢╨╡╨╜╨╕╤П.
рд╕реНрд░реЛрдд: www.habr.com
