Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Ρ‚Π΅ 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 ΠΎΡ‚ Π½Π°ΡˆΠ°Ρ‚Π° конфигурация, Π° послС Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ…ΠΌΠ΅ Π΄Π° изпълнявамС сборочни инструкции във Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ ΠΈ Π΄Π° ΠΏΡ€Π°Π²ΠΈΠΌ commit.

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

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

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

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

NB: ΠœΠ΅ΠΆΠ΄Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΡ‚ΠΎ, Π·Π°Ρ‰ΠΎ ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ Π±ΠΈΡ…Ρ‚Π΅ искали Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ werf? ΠžΡΠ½ΠΎΠ²Π½ΠΈΡ‚Π΅ ΠΌΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚:

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

Π‘ ΠΏΠΎ-пълния ΠΈΠΌ списък ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° сС Π·Π°ΠΏΠΎΠ·Π½Π°Π΅Ρ‚Π΅ Π½Π° страницата Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

И Ρ‚Π°ΠΊΠ°, Π°ΠΊΠΎ ΠΏΡ€Π΅Π΄ΠΈ Π±ΠΈΡ…ΠΌΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ»ΠΈ Π΄Π° ΠΏΡ€Π΅Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Dockerfile Π½Π° нашия ΠΊΠΎΠ½Ρ„ΠΈΠ³, Ρ‚ΠΎ сСга с радост Ρ‰Π΅ ΠΊΠ°ΠΆΠ΅ΠΌ: "ΠŸΠΎΠ·Π²ΠΎΠ»Π΅Ρ‚Π΅ Π½Π° werf Π΄Π° ΡΡŠΠ±Π΅Ρ€Π΅ Π²Π°ΡˆΠΈΡ‚Π΅ Dockerfile'ΠΈ!"

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

ΠŸΡŠΠ»Π½Π°Ρ‚Π° рСализация Π½Π° Ρ‚Π°Π·ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ сС появи Π² Ρ€Π΅Π»ΠΈΠ·Π° 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 Π·Π° сборка Π½Π° няколко ΠΎΠ±Ρ€Π°Π·Π° ΠΎΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Dockerfile'ΠΈ:

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 (ΠΈΠ»ΠΈ werf build-and-publish) ΠΈ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π·Π° Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅ Π² Kubernetes. ΠŸΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ΠΈΡ‚Π΅ ΠΎΠ±Ρ€Π°Π·ΠΈ Π² Docker Registry Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ чистСни с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° стандартни срСдства Π·Π° почистванС Π½Π° werf, Ρ‚.Π΅. Ρ‰Π΅ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ почистванС Π½Π° стари ΠΎΠ±Ρ€Π°Π·ΠΈ (ΠΏΠΎ-стари ΠΎΡ‚ N Π΄Π½ΠΈ), ΠΎΠ±Ρ€Π°Π·ΠΈ, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с Π½Π΅ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈ Git ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅, ΠΈ ΠΏΠΎ Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ.

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

Π‘Π΅Π»Π΅ΠΆΠΊΠΈ ΠΈ прСдупрСТдСния

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

Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π΅ сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° външСн URL Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°Ρ‚Π° ADD. Werf няма Π΄Π° ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€Π° Π½ΠΎΠ²ΠΎ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ ΠΏΡ€ΠΈ промяна Π½Π° рСсурса ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½ URL. Π’ скоро Π²Ρ€Π΅ΠΌΠ΅ сС ΠΏΠ»Π°Π½ΠΈΡ€Π° добавянС Π½Π° Ρ‚Π°Π·ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚.

2. НС ΠΌΠΎΠΆΠ΅ Π΄Π° сС добавя .git Π² ΠΎΠ±Ρ€Π°Π·Π°

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

  1. Ако .git остава Π² крайния ΠΎΠ±Ρ€Π°Π·, ΠΊΠΎΠ΅Ρ‚ΠΎ Π½Π°Ρ€ΡƒΡˆΠ°Π²Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΡ‚Π΅ 12 factor app: Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ крайният ΠΎΠ±Ρ€Π°Π· трябва Π΄Π° бъдС ΡΠ²ΡŠΡ€Π·Π°Π½ с Π΅Π΄ΠΈΠ½ ΠΊΠΎΠΌΠΈΡ‚, Π½Π΅ трябва Π΄Π° ΠΈΠΌΠ° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ git checkout Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ ΠΊΠΎΠΌΠΈΡ‚.
  2. .git ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° ΠΎΠ±Ρ€Π°Π·Π° (рСпозитория ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ голям, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π² Π½Π΅Π³ΠΎ някога са Π±ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ Π³ΠΎΠ»Π΅ΠΌΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, Π° слСд Ρ‚ΠΎΠ²Π° са Π±ΠΈΠ»ΠΈ ΠΈΠ·Ρ‚Ρ€ΠΈΡ‚ΠΈ). Π Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π½ΠΎΡ‚ΠΎ Π΄ΡŠΡ€Π²ΠΎ, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΎ само с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΊΠΎΠΌΠΈΡ‚, няма Π΄Π° зависи ΠΎΡ‚ историята Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ Π² Git. ΠŸΡ€ΠΈ Ρ‚ΠΎΠ²Π° добавянСто ΠΈ послСдващото ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅ .git ΠžΡ‚ финалния ΠΎΠ±Ρ€Π°Π· няма Π΄Π° сработи: ΠΎΠ±Ρ€Π°Π·ΡŠΡ‚ всС ΠΏΠ°ΠΊ Ρ‰Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ излишСн слой β€” Ρ‚Π°ΠΊΠ° Ρ€Π°Π±ΠΎΡ‚ΠΈ Docker.
  3. Docker ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€Π° излишно ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅, Π΄ΠΎΡ€ΠΈ Π°ΠΊΠΎ става Π²ΡŠΠΏΡ€ΠΎΡ Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΡŠΡ‰ΠΎΡ‚ΠΎ ΠΊΠΎΠΌΠΈΡ‚, Π½ΠΎ ΠΎΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ work-tree. НапримСр, 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 Π±ΠΈΠ»Π΄ΡŠΡ€ΡŠΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ сС справя със Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π° си.

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

Π’Π°ΠΊΠ° Ρ‡Π΅, Π°ΠΊΠΎ случайно ΠΈΠΌΠ°Ρ‚Π΅ няколко Dockerfile-ΠΎΠ²ΠΈ... ΠΎΠΏΠΈΡ‚Π°ΠΉΡ‚Π΅ werf!

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

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

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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster