Π’Π΅Ρ‡Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ Docker изобраТСния Π² werf, ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ Dockerfile

По-Π΄ΠΎΠ±Ρ€Π΅ късно ΠΎΡ‚ ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ Π½ΠΈΠΊΠΎΠ³Π°. Или ΠΊΠ°ΠΊ ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ…ΠΌΠ΅ сСриозна Π³Ρ€Π΅ΡˆΠΊΠ°, ΠΊΠ°Ρ‚ΠΎ нямахмС ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ Dockerfiles Π·Π° създаванС Π½Π° изобраТСния Π½Π° прилоТСния.

Π’Π΅Ρ‡Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ Docker изобраТСния Π² werf, ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ Dockerfile

Π©Π΅ става Π²ΡŠΠΏΡ€ΠΎΡ Π·Π° werf - ΠŸΠΎΠΌΠΎΡ‰Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° GitOps, която сС ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π° с всяка CI / CD систСма ΠΈ осигурява ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° цСлия ΠΆΠΈΠ·Π½Π΅Π½ Ρ†ΠΈΠΊΡŠΠ» Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΈ позволява Π΄Π°:

  • ΡΡŠΠ±ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°ΠΉΡ‚Π΅ изобраТСния,
  • Ρ€Π°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅ Π½Π° прилоТСния Π² Kubernetes,
  • ΠΈΠ·Ρ‚Ρ€ΠΈΠΉΡ‚Π΅ Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡ‚Π΅ изобраТСния, ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ спСциални ΠΏΡ€Π°Π²ΠΈΠ»Π°.


Ѐилософията Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΅ Π΄Π° сС ΡΡŠΠ±Π΅Ρ€Π°Ρ‚ инструмСнти ΠΎΡ‚ ниско Π½ΠΈΠ²ΠΎ Π² Π΅Π΄ΠΈΠ½Π½Π° ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π° систСма, която Π΄Π°Π²Π° Π½Π° ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΡ‚Π΅ Π½Π° DevOps ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π°Π΄ прилоТСнията. Ако Π΅ възмоТно, трябва Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈ ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ (ΠΊΠ°Ρ‚ΠΎ Helm ΠΈ Docker). Ако няма Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π΄Π΅Π½ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° създадСм ΠΈ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°ΠΌΠ΅ всичко Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° Ρ‚ΠΎΠ²Π°.

ΠŸΡ€Π΅Π΄ΠΈΡΡ‚ΠΎΡ€ΠΈΡ: ваш собствСн ΠΊΠΎΠ»Π΅ΠΊΡ‚ΠΎΡ€ Π½Π° изобраТСния

Π’ΠΎΠ²Π° сС случи с конструктора Π½Π° изобраТСния Π² werf: липсвашС Π½ΠΈ обичайният Dockerfile. Ако Π½Π°ΠΊΡ€Π°Ρ‚ΠΊΠΎ сС ΠΏΠΎΡ‚ΠΎΠΏΠΈΡ‚Π΅ Π² историята Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Ρ‚ΠΎΠ³Π°Π²Π° Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ сС прояви ΠΎΡ‰Π΅ Π² ΠΏΡŠΡ€Π²ΠΈΡ‚Π΅ вСрсии Π½Π° werf (Ρ‚ΠΎΠ³Π°Π²Π° извСстСн ΠΊΠ°Ρ‚ΠΎ dapp).

Π”ΠΎΠΊΠ°Ρ‚ΠΎ ΡΡŠΠ·Π΄Π°Π²Π°Ρ…ΠΌΠ΅ инструмСнт Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° прилоТСния Π² Docker изобраТСния, Π±ΡŠΡ€Π·ΠΎ Ρ€Π°Π·Π±Ρ€Π°Ρ…ΠΌΠ΅, Ρ‡Π΅ Dockerfile Π½Π΅ Π΅ подходящ Π·Π° нас Π·Π° някои ΠΌΠ½ΠΎΠ³ΠΎ спСцифични Π·Π°Π΄Π°Ρ‡ΠΈ:

  1. НСобходимостта ΠΎΡ‚ сглобяванС Π½Π° Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΈ ΠΌΠ°Π»ΠΊΠΈ ΡƒΠ΅Π± прилоТСния съгласно слСдната стандартна схСма:
    • инсталирайтС систСмнитС зависимости Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ,
    • инсталирайтС ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΎΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π·Π° зависимост Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ,
    • ΡΡŠΠ±ΠΈΡ€Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈ,
    • ΠΈ Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΎΡ‚ΠΎ, Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΊΠΎΠ΄Π° Π² ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π±ΡŠΡ€Π·ΠΎ ΠΈ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ.
  2. ΠšΠΎΠ³Π°Ρ‚ΠΎ сС правят ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ във Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΡΡŠΠ·Π΄Π°Ρ‚Π΅Π»ΡΡ‚ трябва Π±ΡŠΡ€Π·ΠΎ Π΄Π° създадС Π½ΠΎΠ² слой, ΠΊΠ°Ρ‚ΠΎ ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅.
  3. Ако някои Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ са ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½ΠΈ, Ρ‚ΠΎΠ³Π°Π²Π° ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡΡ‚ зависим Π΅Ρ‚Π°ΠΏ трябва Π΄Π° бъдС ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½ ΠΎΡ‚Π½ΠΎΠ²ΠΎ.

ДнСс Π² нашия ΠΊΡ€Π°Π½ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ, Π½ΠΎ ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΈΡ‚Π΅ ТСлания ΠΈ ΠΏΠΎΡ€ΠΈΠ²ΠΈ бяха слСднитС.

ΠšΠ°Ρ‚ΠΎ цяло, Π±Π΅Π· Π΄Π° мислим Π΄Π²Π° ΠΏΡŠΡ‚ΠΈ, сС Π²ΡŠΠΎΡ€ΡŠΠΆΠΈΡ…ΠΌΠ΅ с използвания Π΅Π·ΠΈΠΊ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ (Π²ΠΈΠΆ ΠΎΡ‚Π΄ΠΎΠ»Ρƒ) ΠΈ Ρ‚Ρ€ΡŠΠ³Π½ΠΈ Π½Π° ΠΏΡŠΡ‚ - Π·Π° изпълнСниС собствСн DSL! Π’ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅ с поставСнитС Π·Π°Π΄Π°Ρ‡ΠΈ бСшС ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΎ Π΄Π° сС опишС ΠΏΡ€ΠΎΡ†Π΅ΡΡŠΡ‚ Π½Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° Π΅Ρ‚Π°ΠΏΠΈ ΠΈ Π΄Π° сС опрСдСлят зависимоститС Π½Π° Ρ‚Π΅Π·ΠΈ Π΅Ρ‚Π°ΠΏΠΈ ΠΎΡ‚ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅. И Π³ΠΎ допълни собствСн ΠΊΡ€Π°Π½, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΡ€Π΅Π²ΡŠΡ€Π½Π° DSL Π² ΠΊΡ€Π°ΠΉΠ½Π°Ρ‚Π° Ρ†Π΅Π» – сглобСното ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. ΠŸΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ DSL бСшС Π² Ruby, Π½ΠΎ ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ към Golang - конфигурацията Π½Π° нашия ΠΊΠΎΠ»Π΅ΠΊΡ‚ΠΎΡ€ Π·Π°ΠΏΠΎΡ‡Π½Π° Π΄Π° сС описва Π² YAML Ρ„Π°ΠΉΠ»Π°.

Π’Π΅Ρ‡Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ Docker изобраТСния Π² werf, ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ Dockerfile
Π‘Ρ‚Π°Ρ€Π° конфигурация Π·Π° dapp Π² Ruby

Π’Π΅Ρ‡Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ Docker изобраТСния Π² werf, ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ Dockerfile
ДСйствитСлна конфигурация Π·Π° werf Π½Π° YAML

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡŠΡ‚ Π½Π° ΠΊΠΎΠ»Π΅ΠΊΡ‚ΠΎΡ€Π° ΡΡŠΡ‰ΠΎ сС промСня с Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ. ΠŸΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ просто Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ…ΠΌΠ΅ някакъв Π²Ρ€Π΅ΠΌΠ΅Π½Π΅Π½ Dockerfile ΠΎΡ‚ Π½Π°ΡˆΠ°Ρ‚Π° конфигурация Π² Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅, Π° слСд Ρ‚ΠΎΠ²Π° Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ…ΠΌΠ΅ Π΄Π° изпълнявамС инструкции Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ във Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ ΠΈ Π΄Π° ΠΏΡ€Π°Π²ΠΈΠΌ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ΠΈ.

NB: Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π°ΡˆΠΈΡΡ‚ конструктор, ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ със собствСна конфигурация (Π² YAML) ΠΈ сС Π½Π°Ρ€ΠΈΡ‡Π° Stapel builder, Π²Π΅Ρ‡Π΅ сС Π΅ ΠΏΡ€Π΅Π²ΡŠΡ€Π½Π°Π» Π² доста ΠΌΠΎΡ‰Π΅Π½ инструмСнт. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡ‚ΠΎ ΠΌΡƒ описаниС заслуТава ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ статии, Π° основнитС подробности ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π² докумСнтация.

ОсъзнаванС Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°

Но ΠΎΡΡŠΠ·Π½Π°Ρ…ΠΌΠ΅, ΠΈ Ρ‚ΠΎ Π½Π΅ Π²Π΅Π΄Π½Π°Π³Π°, Ρ‡Π΅ смС Π½Π°ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ Π΅Π΄Π½Π° Π³Ρ€Π΅ΡˆΠΊΠ°: Π½Π΅ смС Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ способността ΡΡŠΠ·Π΄Π°Π²Π°ΠΉΡ‚Π΅ изобраТСния Ρ‡Ρ€Π΅Π· стандартСн Dockerfile ΠΈ Π³ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°ΠΉΡ‚Π΅ Π² Π΅Π΄Π½Π° ΠΈ ΡΡŠΡ‰Π° инфраструктура Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° прилоТСния ΠΎΡ‚ ΠΊΡ€Π°ΠΉ Π΄ΠΎ ΠΊΡ€Π°ΠΉ (Ρ‚.Π΅. ΡΡŠΠ±ΠΈΡ€Π°ΠΉΡ‚Π΅ изобраТСния, внСдрявайтС ΠΈ Π³ΠΈ почиствайтС). Как Π±ΠΈΡ…Ρ‚Π΅ ΠΌΠΎΠ³Π»ΠΈ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ инструмСнт Π·Π° внСдряванС Π² Kubernetes ΠΈ Π΄Π° Π½Π΅ Π²Π½Π΅Π΄Ρ€ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Dockerfile, Ρ‚.Π΅. стандартСн Π½Π°Ρ‡ΠΈΠ½ Π·Π° описаниС Π½Π° изобраТСния Π·Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ?..

ВмСсто ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ Π½Π° Ρ‚Π°ΠΊΡŠΠ² Π²ΡŠΠΏΡ€ΠΎΡ, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΠΌΠ΅ Π½Π΅Π³ΠΎΠ²ΠΎΡ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. Ами Π°ΠΊΠΎ Π²Π΅Ρ‡Π΅ ΠΈΠΌΠ°Ρ‚Π΅ Dockerfile (ΠΈΠ»ΠΈ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ Dockerfiles) ΠΈ искатС Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ werf?

NB: ΠœΠ΅ΠΆΠ΄Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΡ‚ΠΎ, Π·Π°Ρ‰ΠΎ ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ искатС Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ werf? ΠžΡΠ½ΠΎΠ²Π½ΠΈΡ‚Π΅ характСристики сС свСТдат Π΄ΠΎ слСдното:

  • пълСн Ρ†ΠΈΠΊΡŠΠ» Π½Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ почистващи изобраТСния;
  • Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° сглобяванСто Π½Π° няколко изобраТСния навСднъТ ΠΎΡ‚ Π΅Π΄Π½Π° конфигурация;
  • ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ процСс Π½Π° внСдряванС Π·Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΈ, ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΈ с Helm.

По-пълСн списък ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π½Π°ΠΌΠ΅Ρ€Π΅Π½ Π½Π° страница Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π’Π°ΠΊΠ° Ρ‡Π΅, Π°ΠΊΠΎ ΠΏΠΎ-Ρ€Π°Π½ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ…ΠΌΠ΅ прСнаписванС Π½Π° Dockerfile Π² Π½Π°ΡˆΠ°Ρ‚Π° конфигурация, сСга смС щастливи Π΄Π° ΠΊΠ°ΠΆΠ΅ΠΌ: β€žΠΠ΅ΠΊΠ° werf ΠΈΠ·Π³Ρ€Π°Π΄ΠΈ Π²Π°ΡˆΠΈΡ‚Π΅ Dockerfiles!β€œ

Как Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅?

ΠŸΡŠΠ»Π½ΠΎΡ‚ΠΎ изпълнСниС Π½Π° Ρ‚Π°Π·ΠΈ функция сС появи Π² ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Ρ‚ΠΎ werf v1.0.3-beta.1. ΠžΠ±Ρ‰ΠΈΡΡ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π΅ прост: потрСбитСлят посочва ΠΏΡŠΡ‚Ρ към ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ Dockerfile Π² конфигурацията Π½Π° werf ΠΈ слСд Ρ‚ΠΎΠ²Π° изпълнява ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° werf build... ΠΈ Ρ‚ΠΎΠ²Π° Π΅ - werf Ρ‰Π΅ ΠΈΠ·Π³Ρ€Π°Π΄ΠΈ ΠΎΠ±Ρ€Π°Π·Π°. НСка Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π΅Π΄ΠΈΠ½ абстрактСн ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

НСка обявим слСдващия Dockerfile Π² основата Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

FROM ubuntu:18.04
RUN echo Building ...

И Ρ‰Π΅ обявим werf.yamlΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Ρ‚ΠΎΠ²Π° Dockerfile:

configVersion: 1
project: dockerfile-example
---
image: ~
dockerfile: ./Dockerfile

Всичко! Наляво бягай werf build:

Π’Π΅Ρ‡Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ Docker изобраТСния Π² werf, ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ Dockerfile

ОсвСн Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€Π°Ρ‚Π΅ слСдното werf.yaml Π·Π° създаванС Π½Π° няколко изобраТСния навСднъТ ΠΎΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Docker Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅:

configVersion: 1
project: dockerfile-example
---
image: backend
dockerfile: ./dockerfiles/Dockerfile-backend
---
image: frontend
dockerfile: ./dockerfiles/Dockerfile-frontend

И накрая, ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° сС ΠΈ ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π½Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ - ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€ --build-arg ΠΈ --add-host - Ρ‡Ρ€Π΅Π· конфигурацията Π½Π° werf. Пълно описаниС Π½Π° конфигурацията Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Dockerfile Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΎ Π½Π° страница с докумСнтация.

Как дСйства тя?

По Π²Ρ€Π΅ΠΌΠ΅ Π½Π° процСса Π½Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ стандартният кСш Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΈΡ‚Π΅ слоСвС Π² Docker Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ Π²Π°ΠΆΠ½ΠΎ, werf ΡΡŠΡ‰ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π° конфигурацията Π½Π° Dockerfile Π² своята инфраструктура. Какво ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° Ρ‚ΠΎΠ²Π°?

  1. Всяко ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, създадСно ΠΎΡ‚ Dockerfile, сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ Π΅Π΄ΠΈΠ½ Π΅Ρ‚Π°ΠΏ, Π½Π°Ρ€Π΅Ρ‡Π΅Π½ dockerfile (ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊΠ²ΠΈ Π΅Ρ‚Π°ΠΏΠΈ ΠΈΠΌΠ° Π² werf, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ Ρ‚ΡƒΠΊ).
  2. Π—Π° сцСна dockerfile werf изчислява подпис, ΠΊΠΎΠΉΡ‚ΠΎ зависи ΠΎΡ‚ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° конфигурацията Π½Π° Dockerfile. ΠŸΡ€ΠΎΠΌΡΠ½Π°Ρ‚Π° Π½Π° конфигурацията Π½Π° Dockerfile промСня сигнатурата Π½Π° Π΅Ρ‚Π°ΠΏΠ° dockerfile ΠΈ werf Ρ‰Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° Ρ‚ΠΎΠ·ΠΈ Π΅Ρ‚Π°ΠΏ с Π½ΠΎΠ²Π°Ρ‚Π° конфигурация Π½Π° Dockerfile. Ако ΠΏΠΎΠ΄ΠΏΠΈΡΡŠΡ‚ Π½Π΅ сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ, Ρ‚ΠΎΠ³Π°Π²Π° werf Π²Π·Π΅ΠΌΠ° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΎΡ‚ кСша (ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° подписи Π² werf бСшС описано Π² Ρ‚ΠΎΠ·ΠΈ Π΄ΠΎΠΊΠ»Π°Π΄).
  3. ОсвСн Ρ‚ΠΎΠ²Π° ΡΡŠΠ±Ρ€Π°Π½ΠΈΡ‚Π΅ изобраТСния ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ΠΈ с ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° werf publish (Or werf build-and-publish) ΠΈ Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ Π·Π° внСдряванС Π² Kubernetes. ΠŸΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ΠΈΡ‚Π΅ изобраТСния Π² Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€Π° Π½Π° Docker Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ почистСни със стандартни инструмСнти Π·Π° почистванС Π½Π° werf, Ρ‚.Π΅. Ρ‰Π΅ ΠΈΠΌΠ° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ почистванС Π½Π° стари изобраТСния (ΠΏΠΎ-стари ΠΎΡ‚ N Π΄Π½ΠΈ), изобраТСния, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с Π½Π΅ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ Π½Π° Git, ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ.

ΠŸΠΎΠ²Π΅Ρ‡Π΅ подробности Π·Π° описанитС Ρ‚ΡƒΠΊ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π² докумСнтацията:

Π‘Π΅Π»Π΅ΠΆΠΊΠΈ ΠΈ ΠΏΡ€Π΅Π΄ΠΏΠ°Π·Π½ΠΈ ΠΌΠ΅Ρ€ΠΊΠΈ

1. Π’ΡŠΠ½ΡˆΠ΅Π½ URL адрСс Π² ADD Π½Π΅ сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° външСн URL адрСс Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π΅ сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°. ADD. Werf няма Π΄Π° задСйства ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ рСсурс Π½Π° посочСния URL сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ. Π’Π°Π·ΠΈ функция сС ΠΏΠ»Π°Π½ΠΈΡ€Π° Π΄Π° бъдС Π΄ΠΎΠ±Π°Π²Π΅Π½Π° скоро.

2. НС ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ .git към ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

Най-ΠΎΠ±Ρ‰ΠΎ ΠΊΠ°Π·Π°Π½ΠΎ, добавянС Π½Π° дирСктория .git Π² ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π΅ ΠΏΠΎΡ€ΠΎΡ‡Π½Π° лоша ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° ΠΈ Π΅Ρ‚ΠΎ Π·Π°Ρ‰ΠΎ:

  1. Π°ΠΊΠΎ .git остава Π² крайния ΠΎΠ±Ρ€Π°Π·, Ρ‚ΠΎΠ²Π° Π½Π°Ρ€ΡƒΡˆΠ°Π²Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΡ‚Π΅ 12 Ρ„Π°ΠΊΡ‚ΠΎΡ€Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅: Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΎΡ‚ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ трябва Π΄Π° бъдС ΡΠ²ΡŠΡ€Π·Π°Π½ΠΎ с Π΅Π΄ΠΈΠ½ ΠΊΠΎΠΌΠΈΡ‚, Π½Π΅ Π±ΠΈ трябвало Π΄Π° Π΅ възмоТно Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ git checkout ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚.
  2. .git ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ (Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ голямо ΠΏΠΎΡ€Π°Π΄ΠΈ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ Π³ΠΎΠ»Π΅ΠΌΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ вСднъТ са Π±ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ към Π½Π΅Π³ΠΎ ΠΈ слСд Ρ‚ΠΎΠ²Π° ΠΈΠ·Ρ‚Ρ€ΠΈΡ‚ΠΈ). Π Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π½ΠΎΡ‚ΠΎ Π΄ΡŠΡ€Π²ΠΎ, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΎ само с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ ΠΊΠΎΠΌΠΈΡ‚, няма Π΄Π° зависи ΠΎΡ‚ историята Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ Π² Git. Π’ Ρ‚ΠΎΠ·ΠΈ случай добавянСто ΠΈ послСдващото ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅ .git ΠΎΡ‚ ΠΊΡ€Π°ΠΉΠ½ΠΎΡ‚ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ няма Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ: ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ всС ΠΎΡ‰Π΅ Ρ‰Π΅ ΠΏΡ€ΠΈΠ΄ΠΎΠ±ΠΈΠ΅ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π΅Π½ слой - Ρ‚Π°ΠΊΠ° Ρ€Π°Π±ΠΎΡ‚ΠΈ Docker.
  3. Docker ΠΌΠΎΠΆΠ΅ Π΄Π° задСйства Π½Π΅Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅, Π΄ΠΎΡ€ΠΈ Π°ΠΊΠΎ Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ΠΈ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ сС ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π° ΠΎΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈ Π΄ΡŠΡ€Π²Π΅Ρ‚Π°. НапримСр GitLab създава ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ ΠΊΠ»ΠΎΠ½ΠΈΡ€Π°Π½ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π² /home/gitlab-runner/builds/HASH/[0-N]/yourproject с Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΎ сглобяванС. Π”ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° рСконструкция Ρ‰Π΅ сС дълТи Π½Π° Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ дирСкторията .git Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΊΠ»ΠΎΠ½ΠΈΡ€Π°Π½ΠΈ вСрсии Π½Π° Π΅Π΄Π½ΠΎ ΠΈ ΡΡŠΡ‰ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, Π΄ΠΎΡ€ΠΈ Π°ΠΊΠΎ Π΅ ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½ Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ ΠΊΠΎΠΌΠΈΡ‚.

ΠŸΠΎΡΠ»Π΅Π΄Π½Π°Ρ‚Π° Ρ‚ΠΎΡ‡ΠΊΠ° ΡΡŠΡ‰ΠΎ ΠΈΠΌΠ° послСдствия ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° werf. Werf изисква вградСният кСш Π΄Π° ΠΏΡ€ΠΈΡΡŠΡΡ‚Π²Π° ΠΏΡ€ΠΈ изпълнСниС Π½Π° някои ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ (Π½Π°ΠΏΡ€. werf deploy). По Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ‚Π°ΠΊΠΈΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ werf изчислява Π΅Ρ‚Π°ΠΏΠ½ΠΈ сигнатури Π·Π° изобраТСнията, посочСни Π² werf.yaml, ΠΈ Ρ‚Π΅ трябва Π΄Π° са Π² кСша Π·Π° компилация, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π΅Π½ случай ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° няма Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈ. Ако ΠΏΠΎΠ΄ΠΏΠΈΡΡŠΡ‚ Π½Π° Π΅Ρ‚Π°ΠΏΠΈΡ‚Π΅ зависи ΠΎΡ‚ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ .git, Ρ‚ΠΎΠ³Π°Π²Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ кСш, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ нСстабилСн Π·Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² нСподходящи Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ werf няма Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° прости ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π΅Π΄ΠΎΠ³Π»Π΅ΠΆΠ΄Π°Π½Π΅ (Π·Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅ подробности Π²ΠΈΠΆΡ‚Π΅ докумСнтация).

ΠšΠ°Ρ‚ΠΎ цяло, добавянС само Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Ρ‡Ρ€Π΅Π· инструкции ADD във всСки случай повишава СфСктивността ΠΈ надСТдността Π½Π° написаното Dockerfile, Π° ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° подобрява стабилността Π½Π° кСша, ΡΡŠΠ±Ρ€Π°Π½ ΠΎΡ‚ Ρ‚ΠΎΠ²Π° Dockerfile, Π΄ΠΎ нСумСстни ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² Git.

ΠžΠ±Ρ‰ΠΎ

ΠŸΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΈΡΡ‚ Π½ΠΈ ΠΏΡŠΡ‚ с писанСто Π½Π° нашия собствСн конструктор Π·Π° спСцифични Π½ΡƒΠΆΠ΄ΠΈ бСшС Ρ‚Ρ€ΡƒΠ΄Π΅Π½, чСстСн ΠΈ ясСн: вмСсто Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΏΠ°Ρ‚Π΅Ρ€ΠΈΡ†ΠΈ Π²ΡŠΡ€Ρ…Ρƒ стандартния Dockerfile, Π½ΠΈΠ΅ написахмС собствСно Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ с пСрсонализиран синтаксис. И Ρ‚ΠΎΠ²Π° Π΄Π°Π΄Π΅ своитС прСдимства: Stapel-ΠΊΠΎΠ»Π΅ΠΊΡ‚ΠΎΡ€ΡŠΡ‚ Π²ΡŠΡ€ΡˆΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° си ΠΏΠ΅Ρ€Ρ„Π΅ΠΊΡ‚Π½ΠΎ.

Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, Π² процСса Π½Π° писанС Π½Π° нашия собствСн конструктор, Π½ΠΈΠ΅ Π·Π°Π³ΡƒΠ±ΠΈΡ…ΠΌΠ΅ ΠΎΡ‚ ΠΏΠΎΠ³Π»Π΅Π΄ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π·Π° Π²Π΅Ρ‡Π΅ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈ Dockerfiles. Π‘Π΅Π³Π° Ρ‚ΠΎΠ·ΠΈ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΠΊ Π΅ ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½ ΠΈ Π² Π±ΡŠΠ΄Π΅Ρ‰Π΅ ΠΏΠ»Π°Π½ΠΈΡ€Π°ΠΌΠ΅ Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Dockerfile Π·Π°Π΅Π΄Π½ΠΎ с нашия пСрсонализиран Stapel builder Π·Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΠΈ ΠΈ Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Kubernetes (Ρ‚.Π΅. ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° runners Π² Kubernetes, ΠΊΠ°ΠΊΡ‚ΠΎ Π΅ Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΎ Π² kaniko).

Π’Π°ΠΊΠ° Ρ‡Π΅, Π°ΠΊΠΎ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ ΠΈΠΌΠ°Ρ‚Π΅ няколко Docker Ρ„Π°ΠΉΠ»Π°, Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈ Π½Π°ΠΎΠΊΠΎΠ»ΠΎ... ΠžΠΏΠΈΡ‚Π²Π°ΠΌ werf!

PS Бписък с докумСнтация ΠΏΠΎ Ρ‚Π΅ΠΌΠ°Ρ‚Π°

ΠŸΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΡΡŠΡ‰ΠΎ Π² нашия Π±Π»ΠΎΠ³:werf - Π½Π°ΡˆΠΈΡΡ‚ инструмСнт Π·Π° CI / CD Π² Kubernetes (ΠΎΠ±Ρ‰ ΠΏΡ€Π΅Π³Π»Π΅Π΄ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΠΎΡ‚Ρ‡Π΅Ρ‚)".

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€