ΠšΠΎΡ€ΠΈΡˆΡ›Π΅ΡšΠ΅ Π²ΠΈΡˆΠ΅ΡΡ‚Π΅ΠΏΠ΅Π½ΠΎΠ³ Π”ΠΎΡ†ΠΊΠ΅Ρ€-Π° Π·Π° ΠΏΡ€Π°Π²Ρ™Π΅ΡšΠ΅ Виндовс слика

Π—Π΄Ρ€Π°Π²ΠΎ свима! МојС ΠΈΠΌΠ΅ јС ΠΠ½Π΄Ρ€Π΅Ρ˜ ΠΈ Ρ€Π°Π΄ΠΈΠΌ ΠΊΠ°ΠΎ Π”Π΅Π²ΠžΠΏΡ ΠΈΠ½ΠΆΠ΅ΡšΠ΅Ρ€ Ρƒ ЕкнСссу Ρƒ Ρ€Π°Π·Π²ΠΎΡ˜Π½ΠΎΠΌ Ρ‚ΠΈΠΌΡƒ. Моја основна дСлатност сС односи Π½Π° ΠΈΠ·Π³Ρ€Π°Π΄ΡšΡƒ, ΠΏΠΎΡΡ‚Π°Π²Ρ™Π°ΡšΠ΅ ΠΈ ΠΏΠΎΠ΄Ρ€ΡˆΠΊΡƒ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Ρƒ Π΄ΠΎΡ†ΠΊΠ΅Ρ€-Ρƒ ΠΏΠΎΠ΄ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΈΠΌ систСмом Π›ΠΈΠ½ΡƒΠΊ (Ρƒ Π΄Π°Ρ™Π΅ΠΌ тСксту ОБ). НСдавно сам ΠΈΠΌΠ°ΠΎ Π·Π°Π΄Π°Ρ‚Π°ΠΊ са истим активностима, Π°Π»ΠΈ Ρ†ΠΈΡ™Π½ΠΈ ОБ ΠΏΡ€ΠΎΡ˜Π΅ΠΊΡ‚Π° јС Π±ΠΈΠΎ Виндовс Π‘Π΅Ρ€Π²Π΅Ρ€ ΠΈ скуп Π¦++ ΠΏΡ€ΠΎΡ˜Π΅ΠΊΠ°Ρ‚Π°. Π—Π° ΠΌΠ΅Π½Π΅ јС ΠΎΠ²ΠΎ Π±ΠΈΠ»Π° ΠΏΡ€Π²Π° блиска ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ†ΠΈΡ˜Π° са Π΄ΠΎΡ†ΠΊΠ΅Ρ€ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈΠΌΠ° ΠΏΠΎΠ΄ Виндовс ОБ-ΠΎΠΌ ΠΈ, ΡƒΠΎΠΏΡˆΡ‚Π΅, са Π¦++ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°ΠΌΠ°. Π—Π°Ρ…Π²Π°Ρ™ΡƒΡ˜ΡƒΡ›ΠΈ Ρ‚ΠΎΠΌΠ΅, ΠΈΠΌΠ°ΠΎ сам Π·Π°Π½ΠΈΠΌΡ™ΠΈΠ²ΠΎ искуство ΠΈ Π½Π°ΡƒΡ‡ΠΈΠΎ сам ΠΎ Π½Π΅ΠΊΠΈΠΌ Π·Π°ΠΌΡ€ΡˆΠ΅Π½ΠΎΡΡ‚ΠΈΠΌΠ° ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΡΠΊΠΈΡ… Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Ρƒ Виндовс-Ρƒ.

ΠšΠΎΡ€ΠΈΡˆΡ›Π΅ΡšΠ΅ Π²ΠΈΡˆΠ΅ΡΡ‚Π΅ΠΏΠ΅Π½ΠΎΠ³ Π”ΠΎΡ†ΠΊΠ΅Ρ€-Π° Π·Π° ΠΏΡ€Π°Π²Ρ™Π΅ΡšΠ΅ Виндовс слика

Π£ ΠΎΠ²ΠΎΠΌ Ρ‡Π»Π°Π½ΠΊΡƒ ΠΆΠ΅Π»ΠΈΠΌ Π΄Π° Π²Π°ΠΌ ΠΊΠ°ΠΆΠ΅ΠΌ са ΠΊΠ°ΠΊΠ²ΠΈΠΌ сам ΠΏΠΎΡ‚Π΅ΡˆΠΊΠΎΡ›Π°ΠΌΠ° ΠΌΠΎΡ€Π°ΠΎ Π΄Π° сС суочим ΠΈ ΠΊΠ°ΠΊΠΎ сам успСо Π΄Π° ΠΈΡ… Ρ€Π΅ΡˆΠΈΠΌ. Надам сС Π΄Π° Ρ›Π΅ Π²Π°ΠΌ ΠΎΠ²ΠΎ Π±ΠΈΡ‚ΠΈ ΠΎΠ΄ ΠΏΠΎΠΌΠΎΡ›ΠΈ Π·Π° вашС Ρ‚Ρ€Π΅Π½ΡƒΡ‚Π½Π΅ ΠΈ Π±ΡƒΠ΄ΡƒΡ›Π΅ ΠΈΠ·Π°Π·ΠΎΠ²Π΅. УТивај Ρƒ Ρ‡ΠΈΡ‚Π°ΡšΡƒ!

Π—Π°ΡˆΡ‚ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈ?

Компанија ΠΈΠΌΠ° ΠΏΠΎΡΡ‚ΠΎΡ˜Π΅Ρ›Ρƒ инфраструктуру Π·Π° оркСстратор ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€Π° Π₯асхицорп Номад ΠΈ ΠΏΠΎΠ²Π΅Π·Π°Π½Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ - Цонсул ΠΈ Π’Π°ΡƒΠ»Ρ‚. Π—Π±ΠΎΠ³ Ρ‚ΠΎΠ³Π° јС ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ ΠΈΠ·Π°Π±Ρ€Π°Π½Π° ΠΊΠ°ΠΎ Ρ˜Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·Π° испоруку ΠΊΠΎΠΌΠΏΠ»Π΅Ρ‚Π½ΠΎΠ³ Ρ€Π΅ΡˆΠ΅ΡšΠ°. ΠŸΠΎΡˆΡ‚ΠΎ инфраструктура ΠΏΡ€ΠΎΡ˜Π΅ΠΊΡ‚Π° садрТи Π΄ΠΎΡ†ΠΊΠ΅Ρ€ хостовС са Виндовс Π‘Π΅Ρ€Π²Π΅Ρ€ Π¦ΠΎΡ€Π΅ ОБ Π²Π΅Ρ€Π·ΠΈΡ˜Π°ΠΌΠ° 1803 ΠΈ 1809, ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ јС Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚ΠΈ одвојСнС Π²Π΅Ρ€Π·ΠΈΡ˜Π΅ Π΄ΠΎΡ†ΠΊΠ΅Ρ€ слика Π·Π° 1803 ΠΈ 1809. Π£ Π²Π΅Ρ€Π·ΠΈΡ˜ΠΈ 1803, Π²Π°ΠΆΠ½ΠΎ јС Π·Π°ΠΏΠ°ΠΌΡ‚ΠΈΡ‚ΠΈ Π΄Π° јС Π±Ρ€ΠΎΡ˜ Ρ€Π΅Π²ΠΈΠ·ΠΈΡ˜Π΅ хоста Π΄ΠΎΡ†ΠΊΠ΅Ρ€-Π° Π·Π° ΠΈΠ·Π³Ρ€Π°Π΄ΡšΡƒ ΠΌΠΎΡ€Π° Π΄Π° сС ΠΏΠΎΠ΄ΡƒΠ΄Π°Ρ€Π° са Π±Ρ€ΠΎΡ˜Π΅ΠΌ Ρ€Π΅Π²ΠΈΠ·ΠΈΡ˜Π΅ основнС Π΄ΠΎΡ†ΠΊΠ΅Ρ€ сликС ΠΈ хостом Π½Π° ΠΊΠΎΠΌΠ΅ Ρ›Π΅ Π±ΠΈΡ‚ΠΈ ΠΏΠΎΠΊΡ€Π΅Π½ΡƒΡ‚ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ са ΠΎΠ²Π΅ сликС. Π’Π΅Ρ€Π·ΠΈΡ˜Π° 1809 Π½Π΅ΠΌΠ° Ρ‚Π°ΠΊΠ°Π² нСдостатак. ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΠΈ вишС ΠΎΠ²Π΄Π΅.

Π—Π°ΡˆΡ‚ΠΎ Π²ΠΈΡˆΠ΅ΡΡ‚Π΅ΠΏΠ΅Π½ΠΈ?

Π˜Π½ΠΆΠ΅ΡšΠ΅Ρ€ΠΈ Ρ€Π°Π·Π²ΠΎΡ˜Π½ΠΎΠ³ Ρ‚ΠΈΠΌΠ° Π½Π΅ΠΌΠ°Ρ˜Ρƒ ΠΈΠ»ΠΈ ΠΈΠΌΠ°Ρ˜Ρƒ Π²Π΅ΠΎΠΌΠ° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ приступ хостовима Π·Π° ΠΈΠ·Π³Ρ€Π°Π΄ΡšΡƒ; Π½Π΅ ΠΏΠΎΡΡ‚ΠΎΡ˜ΠΈ Π½Π°Ρ‡ΠΈΠ½ Π΄Π° сС Π±Ρ€Π·ΠΎ ΡƒΠΏΡ€Π°Π²Ρ™Π° скупом ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π·Π° ΠΏΡ€Π°Π²Ρ™Π΅ΡšΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ Π½Π° ΠΎΠ²ΠΈΠΌ хостовима, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ½ΡΡ‚Π°Π»ΠΈΡ€Π°ΡšΠ΅ Π΄ΠΎΠ΄Π°Ρ‚Π½ΠΎΠ³ скупа Π°Π»Π°Ρ‚Π° ΠΈΠ»ΠΈ Ρ€Π°Π΄Π½ΠΎΠ³ ΠΎΠΏΡ‚Π΅Ρ€Π΅Ρ›Π΅ΡšΠ° Π·Π° Висуал Π‘Ρ‚ΡƒΠ΄ΠΈΠΎ. Π—Π±ΠΎΠ³ Ρ‚ΠΎΠ³Π° смо Π΄ΠΎΠ½Π΅Π»ΠΈ ΠΎΠ΄Π»ΡƒΠΊΡƒ Π΄Π° инсталирамо свС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ Π½Π΅ΠΎΠΏΡ…ΠΎΠ΄Π½Π΅ Π·Π° ΡƒΠ³Ρ€Π°Π΄ΡšΡƒ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ Ρƒ Π±ΡƒΠΈΠ»Π΄ Π”ΠΎΡ†ΠΊΠ΅Ρ€ имиџ. Ако јС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π±Ρ€Π·ΠΎ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚ΠΈ само Π΄ΠΎΡ†ΠΊΠ΅Ρ€Ρ„ΠΈΠ»Π΅ ΠΈ ΠΏΠΎΠΊΡ€Π΅Π½ΡƒΡ‚ΠΈ Ρ†Π΅Π²ΠΎΠ²ΠΎΠ΄ Π·Π° ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΠ΅ ΠΎΠ²Π΅ сликС.

Од Ρ‚Π΅ΠΎΡ€ΠΈΡ˜Π΅ Π΄ΠΎ Π°ΠΊΡ†ΠΈΡ˜Π΅

Π£ идСалној Π²ΠΈΡˆΠ΅ΡΡ‚Π΅ΠΏΠ΅Π½ΠΎΡ˜ ΠΈΠ·Π³Ρ€Π°Π΄ΡšΠΈ сликС Π”ΠΎΡ†ΠΊΠ΅Ρ€-Π°, ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ΅ Π·Π° ΠΏΡ€Π°Π²Ρ™Π΅ΡšΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ јС ΠΏΡ€ΠΈΠΏΡ€Π΅ΠΌΡ™Π΅Π½ΠΎ Ρƒ ΠΈΡΡ‚ΠΎΡ˜ Π”ΠΎΡ†ΠΊΠ΅Ρ€Ρ„ΠΈΠ»Π΅ скрипти ΠΊΠ°ΠΎ ΠΈ сама Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°. Али Ρƒ нашСм ΡΠ»ΡƒΡ‡Π°Ρ˜Ρƒ јС Π΄ΠΎΠ΄Π°Ρ‚Π° посрСдна Π²Π΅Π·Π°, односно ΠΊΠΎΡ€Π°ΠΊ ΠΏΡ€Π΅Π»ΠΈΠΌΠΈΠ½Π°Ρ€Π½ΠΎΠ³ ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΠ° Π΄ΠΎΡ†ΠΊΠ΅Ρ€ сликС са свимС ΡˆΡ‚ΠΎ јС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ Π·Π° ΠΏΡ€Π°Π²Ρ™Π΅ΡšΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅. Ово јС ΡƒΡ€Π°Ρ’Π΅Π½ΠΎ Π·Π°Ρ‚ΠΎ ΡˆΡ‚ΠΎ сам ΠΆΠ΅Π»Π΅ΠΎ Π΄Π° користим Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Ρƒ Π΄ΠΎΡ†ΠΊΠ΅Ρ€ кСша Π΄Π° смањим Π²Ρ€Π΅ΠΌΠ΅ ΠΈΠ½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Π΅ свих зависности.

Π₯ајдС Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π°ΠΌΠΎ Π³Π»Π°Π²Π½Π΅ Ρ‚Π°Ρ‡ΠΊΠ΅ скриптС Π΄ΠΎΡ†ΠΊΠ΅Ρ€Ρ„ΠΈΠ»Π΅ Π·Π° ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΠ΅ ΠΎΠ²Π΅ сликС.

Π”Π° бистС ΠΊΡ€Π΅ΠΈΡ€Π°Π»ΠΈ сликС Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚ΠΈΡ… Π²Π΅Ρ€Π·ΠΈΡ˜Π° ОБ-Π°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ дСфинисати Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Ρƒ Π΄ΠΎΡ†ΠΊΠ΅Ρ€Ρ„ΠΈΠ»Π΅-Ρƒ ΠΊΡ€ΠΎΠ· који сС прСноси Π±Ρ€ΠΎΡ˜ Π²Π΅Ρ€Π·ΠΈΡ˜Π΅ Ρ‚ΠΎΠΊΠΎΠΌ ΠΈΠ·Π³Ρ€Π°Π΄ΡšΠ΅, Π° Ρ‚Π°ΠΊΠΎΡ’Π΅ јС ΠΈ ΠΎΠ·Π½Π°ΠΊΠ° основнС сликС.

МоТС сС ΠΏΡ€ΠΎΠ½Π°Ρ›ΠΈ ΠΊΠΎΠΌΠΏΠ»Π΅Ρ‚Π½Π° листа ΠœΠΈΡ†Ρ€ΠΎΡΠΎΡ„Ρ‚ Виндовс Π‘Π΅Ρ€Π²Π΅Ρ€ ΠΎΠ·Π½Π°ΠΊΠ° слика ΠΎΠ²Π΄Π΅.

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

ΠŸΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Ρƒ упутствима RUN ΡƒΠ½ΡƒΡ‚Π°Ρ€ Π΄ΠΎΡ†ΠΊΠ΅Ρ€ Ρ„Π°Ρ˜Π»Π° Π½Π° Виндовс ОБ-Ρƒ сС ΠΈΠ·Π²Ρ€ΡˆΠ°Π²Π°Ρ˜Ρƒ Ρƒ ΠΊΠΎΠ½Π·ΠΎΠ»ΠΈ Ρ†ΠΌΠ΄.Π΅ΠΊΠ΅. Π Π°Π΄ΠΈ погодности писања скрипти ΠΈ ΠΏΡ€ΠΎΡˆΠΈΡ€Π΅ΡšΠ° функционалности ΠΊΠΎΡ€ΠΈΡˆΡ›Π΅Π½ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, рСдСфинисаћСмо ΠΊΠΎΠ½Π·ΠΎΠ»Ρƒ Π·Π° ΠΈΠ·Π²Ρ€ΡˆΠ°Π²Π°ΡšΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Ρƒ ΠŸΠΎΠ²Π΅Ρ€ΡΡ…Π΅Π»Π»-Ρƒ ΠΊΡ€ΠΎΠ· ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ˜Ρƒ 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>

Π—Π°Ρ‚ΠΈΠΌ инсталирамо ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ΅ Π·Π° ΠΏΡ€Π°Π²Ρ™Π΅ΡšΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅, односно МБ Π‘ΡƒΠΈΠ»Π΄ Воолс 2019 - ΠΎΠ²ΠΎ јС Π»Π°Π³Π°Π½Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π° Висуал Π‘Ρ‚ΡƒΠ΄ΠΈΠΎ 2019, која садрТи ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π°Π½ скуп ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π·Π° ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»ΠΈΡ€Π°ΡšΠ΅ ΠΊΠΎΠ΄Π°.
Π”Π° бисмо Ρƒ потпуности Ρ€Π°Π΄ΠΈΠ»ΠΈ са нашим Π¦++ ΠΏΡ€ΠΎΡ˜Π΅ΠΊΡ‚ΠΎΠΌ, Π±ΠΈΡ›Π΅ Π½Π°ΠΌ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½Π΅ Π΄ΠΎΠ΄Π°Ρ‚Π½Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅, ΠΈ Ρ‚ΠΎ:

  • ΠžΠΏΡ‚Π΅Ρ€Π΅Ρ›Π΅ΡšΠ΅ Π¦++ Π°Π»Π°Ρ‚Π°
  • ВоолсСт Π²141
  • Виндовс 10 Π‘Π”Πš (10.0.17134.0)

ΠœΠΎΠΆΠ΅Ρ‚Π΅ аутоматски Π΄Π° инсталиратС ΠΏΡ€ΠΎΡˆΠΈΡ€Π΅Π½ΠΈ скуп Π°Π»Π°Ρ‚Π° користСћи ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Ρƒ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΡƒ Ρƒ ЈБОН Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρƒ. Π‘Π°Π΄Ρ€ΠΆΠ°Ρ˜ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅:

ΠšΠΎΠΌΠΏΠ»Π΅Ρ‚Π½Π° листа доступних ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ ΠΌΠΎΠΆΠ΅ сС Π½Π°Ρ›ΠΈ Π½Π° ΡΠ°Ρ˜Ρ‚Ρƒ Π·Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Ρƒ ΠœΠΈΡ†Ρ€ΠΎΡΠΎΡ„Ρ‚ Висуал Π‘Ρ‚ΡƒΠ΄ΠΈΠΎ.

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

Π£ овој Ρ„Π°Π·ΠΈ, наша слика Π·Π° ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»ΠΈΡ€Π°ΡšΠ΅ Π¦++ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ јС спрСмна ΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π΄Π° ΠΏΡ€Π΅Ρ’Π΅ΠΌΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π½Π° ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΠ΅ Π΄ΠΎΡ†ΠΊΠ΅Ρ€ Π²ΠΈΡˆΠ΅ΡΡ‚Π΅ΠΏΠ΅Π½Π΅ Π²Π΅Ρ€Π·ΠΈΡ˜Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅.

Π’ΠΈΡˆΠ΅ΡΡ‚Π΅ΠΏΠ΅Π½ΠΈ Ρƒ Π°ΠΊΡ†ΠΈΡ˜ΠΈ

ΠšΠΎΡ€ΠΈΡΡ‚ΠΈΡ›Π΅ΠΌΠΎ ΠΊΡ€Π΅ΠΈΡ€Π°Π½Ρƒ слику са свим Π°Π»Π°Ρ‚ΠΈΠΌΠ° Π½Π° ΠΏΠ»ΠΎΡ‡ΠΈ ΠΊΠ°ΠΎ слику Π·Π° ΠΈΠ·Π³Ρ€Π°Π΄ΡšΡƒ. Као ΠΈΡƒ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎΡ˜ скрипти Π΄ΠΎΡ†ΠΊΠ΅Ρ€Ρ„ΠΈΠ»Π΅, Π΄ΠΎΠ΄Π°Ρ›Π΅ΠΌΠΎ могућност Π΄Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡ΠΊΠΈ ΠΎΠ΄Ρ€Π΅Π΄ΠΈΠΌΠΎ Π±Ρ€ΠΎΡ˜ Π²Π΅Ρ€Π·ΠΈΡ˜Π΅/ΠΎΠ·Π½Π°ΠΊΡƒ сликС Ρ€Π°Π΄ΠΈ лакшСг ΠΏΠΎΠ½ΠΎΠ²Π½ΠΎΠ³ ΠΊΠΎΡ€ΠΈΡˆΡ›Π΅ΡšΠ° ΠΊΠΎΠ΄Π°. Π’Π°ΠΆΠ½ΠΎ јС Π΄ΠΎΠ΄Π°Ρ‚ΠΈ ΠΎΠ·Π½Π°ΠΊΡƒ 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.

Π—Π°ΠΊΡ™ΡƒΡ‡Π°ΠΊ

Π£ ΠΎΠ²ΠΎΠΌ Ρ‡Π»Π°Π½ΠΊΡƒ сам Π³ΠΎΠ²ΠΎΡ€ΠΈΠΎ ΠΎ Ρ‚ΠΎΠΌΠ΅ ΠΊΠ°ΠΊΠΎ Π΄Π° ΠΊΡ€Π΅ΠΈΡ€Π°ΠΌ ΠΏΡƒΠ½ΠΎΠΏΡ€Π°Π²Π½ΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ΅ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΡ˜Ρƒ Π·Π° Π¦++ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ ΡƒΠ½ΡƒΡ‚Π°Ρ€ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€Π° ΠΏΠΎΠ΄ Виндовс-ΠΎΠΌ ΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π° користим могућности Π²ΠΈΡˆΠ΅ΡΡ‚Π΅ΠΏΠ΅Π½ΠΈΡ… Π΄ΠΎΡ†ΠΊΠ΅Ρ€-Π° Π·Π° ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΠ΅ ΠΏΡƒΠ½ΠΎΠΏΡ€Π°Π²Π½ΠΈΡ… слика нашС Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅.

Π˜Π·Π²ΠΎΡ€: Π²Π²Π².Ρ…Π°Π±Ρ€.Ρ†ΠΎΠΌ

Π”ΠΎΠ΄Π°Ρ˜ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€