ΠΠΎ-Π΄ΠΎΠ±ΡΠ΅ ΠΊΡΡΠ½ΠΎ, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π½ΠΈΠΊΠΎΠ³Π°. ΠΠ»ΠΈ ΠΊΠ°ΠΊ Π΅Π΄Π²Π° Π½Π΅ Π΄ΠΎΠΏΡΡΠ½Π°Ρ ΠΌΠ΅ ΡΠ΅ΡΠΈΠΎΠ·Π½Π° Π³ΡΠ΅ΡΠΊΠ°, Π±Π΅Π· Π΄Π° ΠΈΠΌΠ°ΠΌΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ Dockerfiles ΠΏΡΠΈ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.

Π‘ΡΠ°Π²Π° Π²ΡΠΏΡΠΎΡ Π·Π° β GitOps ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ° Ρ Π²ΡΡΠΊΠ° CI/CD ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅Π»ΠΈΡ ΠΆΠΈΠ·Π½Π΅Π½ ΡΠΈΠΊΡΠ» Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΠΉΠΊΠΈ:
- Π΄Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°ΠΌΠ΅ ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°ΠΌΠ΅ ΠΎΠ±ΡΠ°Π·ΠΈ,
- Π΄Π° ΡΠ°Π·Π³ΡΡΡΠ°ΠΌΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Kubernetes,
- Π΄Π° ΠΈΠ·ΡΡΠΈΠ²Π°ΠΌΠ΅ Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π΅ΠΌΠΈ ΠΎΠ±ΡΠ°Π·ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ.
Π€ΠΈΠ»ΠΎΡΠΎΡΠΈΡΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ Π΄Π° ΠΎΠ±Π΅Π΄ΠΈΠ½ΠΈΠΌ Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π² Π΅Π΄ΠΈΠ½Π½Π° ΡΠ½ΠΈΡΠΈΡΠΈΡΠ°Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°, Π΄Π°Π²Π°ΠΉΠΊΠΈ Π½Π° DevOps ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π°Π΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ°. ΠΡΠ΄Π΅ΡΠΎ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π²Π΅ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ (ΠΊΠ°ΡΠΎ Helm ΠΈ Docker). ΠΠΊΠΎ ΠΎΠ±Π°ΡΠ΅ Π½ΡΠΌΠ° Π³ΠΎΡΠΎΠ²ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°ΠΌΠ΅ Π²ΡΠΈΡΠΊΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° ΡΠΎΠ²Π°.
ΠΡΠ΅Π΄ΠΈΡΡΠΎΡΠΈΡ: Π½Π°ΡΠΈΡΡ ΡΠ±ΠΎΡΡΠΈΠΊ Π½Π° ΠΎΠ±ΡΠ°Π·ΠΈ
Π’Π°ΠΊΠ° ΡΠ΅ ΡΠ»ΡΡΠΈ ΡΡΡ ΡΠ±ΠΎΡΡΠΈΠΊΠ° Π½Π° ΠΎΠ±ΡΠ°Π·ΠΈ Π² werf: ΠΎΠ±ΠΈΡΠ°ΠΉΠ½ΠΈΡΡ Dockerfile Π½Π΅ Π½ΠΈ Π΄ΠΎΡΡΠΈΠ³Π°ΡΠ΅. ΠΠΊΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌ Π±ΡΡΠ·ΠΎ Π² ΠΈΡΡΠΎΡΠΈΡΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΡΠΎΠ·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΠ΅ ΠΏΡΠΎΡΠ²ΠΈ ΠΎΡΠ΅ Π² ΠΏΡΡΠ²ΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π½Π° werf (ΡΠΎΠ³Π°Π²Π° Π²ΡΠ΅ ΠΎΡΠ΅ ).
Π‘ΡΠ·Π΄Π°Π²Π°ΠΉΠΊΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Docker ΠΎΠ±ΡΠ°Π·ΠΈ, Π±ΡΡΠ·ΠΎ ΠΎΡΡΠ·Π½Π°Ρ ΠΌΠ΅, ΡΠ΅ Dockerfile Π½Π΅ Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π·Π° Π½ΡΠΊΠΎΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΈ Π·Π°Π΄Π°ΡΠΈ:
- ΠΠ΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΠ° Π΄Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°ΠΌΠ΅ ΡΠΈΠΏΠΈΡΠ½ΠΈ ΠΌΠ°Π»ΠΊΠΈ ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ΅Π½ ΠΌΠΎΠ΄Π΅Π»:
- Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌΠ΅ ΠΎΠ±ΡΠΎΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ,
- Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌΠ΅ ΠΏΠ°ΠΊΠ΅Ρ ΠΎΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ,
- Π΄Π° ΠΈΠ·Π³ΡΠ°Π΄ΠΈΠΌ Π°ΠΊΡΠΈΠ²ΠΈ,
- ΠΈ Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΎΡΠΎ β Π΄Π° ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π°ΠΌΠ΅ ΠΊΠΎΠ΄Π° Π² ΠΎΠ±ΡΠ°Π·Π° Π±ΡΡΠ·ΠΎ ΠΈ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ.
- ΠΡΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π²ΡΠ² ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ±ΠΎΡΡΠΈΠΊΡΡ ΡΡΡΠ±Π²Π° Π±ΡΡΠ·ΠΎ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ Π½ΠΎΠ² ΡΠ»ΠΎΠΉ, Π½Π°Π»Π°Π³Π°ΠΉΠΊΠΈ ΠΏΠ°Ρ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅.
- ΠΠΊΠΎ ΡΠ° ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ° ΡΡΠΎΡΠ²Π΅ΡΠ½Π°ΡΠ° Π·Π°Π²ΠΈΡΠΈΠΌΠ° ΡΠ°Π·Π°.
ΠΡΠΌ Π΄Π½Π΅ΡΠ½Π° Π΄Π°ΡΠ° Π² Π½Π°ΡΠΈΡ ΡΠ±ΠΎΡΡΠΈΠΊ ΠΈΠΌΠ° ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, Π½ΠΎ ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΈΡΠ΅ Π½ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΡ ΠΈ ΡΡΡΠ΅ΠΌΠ΅ΠΆΠΈ Π±ΡΡ Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊΠΈΠ²Π°.
ΠΠ°ΠΊΡΠ°ΡΠΊΠΎ, Π±Π΅Π· ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π° ΡΠ΅ Π·Π°ΠΌΠΈΡΠ»ΡΠΌΠ΅, Π²ΡΠΎΡΡΠΆΠΈΡ ΠΌΠ΅ ΡΠ΅ Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡ Π΅Π·ΠΈΠΊ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ (Π²ΠΆ. ΠΏΠΎ-Π΄ΠΎΠ»Ρ) ΠΈ ΠΏΠΎΠ΅Ρ ΠΌΠ΅ ΠΏΠΎ ΠΏΡΡΡ β Π΄Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½ DSL! Π‘ΡΠΎΡΠ²Π΅ΡΡΡΠ²Π°ΠΉΠΊΠΈ Π½Π° ΠΏΠΎΡΡΠ°Π²Π΅Π½ΠΈΡΠ΅ Π·Π°Π΄Π°ΡΠΈ, ΡΠΎΠΉ Π±Π΅ΡΠ΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π·Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ ΠΏΠΎ ΡΠ°Π·ΠΈ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΠ΅Π·ΠΈ ΡΠ°Π·ΠΈ ΠΎΡ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅. Π Π³ΠΎ Π΄ΠΎΠΏΡΠ»Π²Π°ΡΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΡΠ±ΠΎΡΡΠΈΠΊ, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠ΅Π²ΡΡΡΠ°ΡΠ΅ DSL Π² ΠΊΡΠ°ΠΉΠ½Π° ΡΠ΅Π» β ΡΠ³Π»ΠΎΠ±Π΅Π½ ΠΎΠ±ΡΠ°Π·. ΠΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ DSL Π±Π΅ΡΠ΅ Π½Π° Ruby, Π° Ρ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ΡΠΎ ΠΊΡΠΌ β ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° Π½Π°ΡΠΈΡ ΡΠ±ΠΎΡΡΠΈΠΊ Π·Π°ΠΏΠΎΡΠ½Π° Π΄Π° ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π° Π² YAML ΡΠ°ΠΉΠ».

Π‘ΡΠ°ΡΠΈΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ Π·Π° dapp Π½Π° Ruby

ΠΠΊΡΡΠ°Π»Π½ΠΈΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ Π·Π° werf Π½Π° YAML
ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡΡ Π½Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° ΡΠ±ΠΎΡΡΠΈΠΊΠ° ΡΡΡΠΎ ΡΠ΅ Π΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΠ» Ρ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ. ΠΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ ΠΏΡΠΎΡΡΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ°Ρ ΠΌΠ΅ Π½Π° ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½ΡΠΊΠ°ΠΊΡΠ² Π²ΡΠ΅ΠΌΠ΅Π½Π΅Π½ Dockerfile ΠΎΡ Π½Π°ΡΠ°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, Π° ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΏΠΎΡΠ½Π°Ρ ΠΌΠ΅ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΠΌΠ΅ ΡΠ±ΠΎΡΠΎΡΠ½ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π²ΡΠ² Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ ΠΈ Π΄Π° ΠΏΡΠ°Π²ΠΈΠΌ commit.
NB: Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½Π°ΡΠΈΡΡ ΡΠ±ΠΎΡΡΠΈΠΊ, ΠΊΠΎΠΉΡΠΎ ΡΠ°Π±ΠΎΡΠΈ Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΠΊΠΎΠ½ΡΠΈΠ³ (Π² YAML) ΠΈ ΡΠ΅ Π½Π°ΡΠΈΡΠ° Stapel-ΡΠ±ΠΎΡΡΠΈΠΊ, Π²Π΅ΡΠ΅ ΡΠ΅ Π΅ ΡΠ°Π·Π²ΠΈΠ» Π² Π΄ΠΎΡΡΠ° ΠΌΠΎΡΠ΅Π½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ. ΠΠ΅Π³ΠΎΠ²ΠΎΡΠΎ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π·Π°ΡΠ»ΡΠΆΠ°Π²Π° ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΡΡΠ°ΡΠΈΠΈ, Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΡΡΠΈΡΠ΅ ΠΎΡ .
ΠΡΡΠ·Π½Π°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°
ΠΠΎ ΡΠ°Π·Π±ΡΠ°Ρ ΠΌΠ΅, ΠΈ Π½Π΅ Π²Π΅Π΄Π½Π°Π³Π°, ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈΡ ΠΌΠ΅ Π΅Π΄Π½Π° Π³ΡΠ΅ΡΠΊΠ°: Π½Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ ΠΌΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π΄Π° ΡΠ΅ ΡΡΠ±ΠΈΡΠ°Ρ ΠΎΠ±ΡΠ°Π·ΠΈ ΡΡΠ΅Π· ΡΡΠ°Π½Π΄Π°ΡΡΠ΅Π½ Dockerfile ΠΈ Π΄Π° Π³ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°ΠΌΠ΅ Π² ΡΡΡΠ°ΡΠ° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (Ρ.Π΅. Π΄Π° ΡΡΠ±ΠΈΡΠ°ΠΌΠ΅ ΠΎΠ±ΡΠ°Π·ΠΈ, Π΄Π° Π³ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠΈΠΌ ΠΈ Π΄Π° Π³ΠΈ ΠΏΠΎΡΠΈΡΡΠ²Π°ΠΌΠ΅). ΠΠ°ΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΌΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° Π΄Π΅ΠΏΠ»ΠΎΠΉ Π² Kubernetes ΠΈ Π΄Π° Π½Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Dockerfile, Ρ.Π΅. ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡ Π½Π°ΡΠΈΠ½ Π·Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΠΎΠ±ΡΠ°Π·ΠΈΡΠ΅ Π·Π° ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈ?..
ΠΠΌΠ΅ΡΡΠΎ ΠΎΡΠ³ΠΎΠ²ΠΎΡ Π½Π° ΡΠ°ΠΊΡΠ² Π²ΡΠΏΡΠΎΡ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΠΌΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΌΡ. ΠΠ°ΠΊΠ²ΠΎ Π΄Π° ΠΏΡΠ°Π²ΠΈΡΠ΅, Π°ΠΊΠΎ Π²Π΅ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ Dockerfile (ΠΈΠ»ΠΈ Π½Π°Π±ΠΎΡ ΠΎΡ Dockerfile'ΠΈ) ΠΈ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ werf?
NB: ΠΠ΅ΠΆΠ΄Ρ Π΄ΡΡΠ³ΠΎΡΠΎ, Π·Π°ΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠΎ Π±ΠΈΡ ΡΠ΅ ΠΈΡΠΊΠ°Π»ΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ werf? ΠΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΠΊΠ»ΡΡΠ²Π°Ρ:
- ΠΏΡΠ»Π΅Π½ ΡΠΈΠΊΡΠ» Π½Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠ±ΡΠ°Π·ΠΈΡΠ΅;
- Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΎΠ±ΡΠ°Π·Π° ΠΎΡ Π΅Π΄ΠΈΠ½Π΅Π½ ΠΊΠΎΠ½ΡΠΈΠ³;
- ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ ΠΏΡΠΎΡΠ΅Ρ Π½Π° Π΄Π΅ΠΏΠ»ΠΎΠΉ Π½Π° ΡΠ°ΡΡΠΎΠ²Π΅, ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΈ Ρ Helm.
Π‘ ΠΏΠΎ-ΠΏΡΠ»Π½ΠΈΡ ΠΈΠΌ ΡΠΏΠΈΡΡΠΊ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°Π΅ΡΠ΅ Π½Π° .
Π ΡΠ°ΠΊΠ°, Π°ΠΊΠΎ ΠΏΡΠ΅Π΄ΠΈ Π±ΠΈΡ ΠΌΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ»ΠΈ Π΄Π° ΠΏΡΠ΅Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ Dockerfile Π½Π° Π½Π°ΡΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³, ΡΠΎ ΡΠ΅Π³Π° Ρ ΡΠ°Π΄ΠΎΡΡ ΡΠ΅ ΠΊΠ°ΠΆΠ΅ΠΌ: "ΠΠΎΠ·Π²ΠΎΠ»Π΅ΡΠ΅ Π½Π° werf Π΄Π° ΡΡΠ±Π΅ΡΠ΅ Π²Π°ΡΠΈΡΠ΅ Dockerfile'ΠΈ!"
ΠΠ°ΠΊ Π΄Π° Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅?
ΠΡΠ»Π½Π°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΠ°Π·ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ ΡΠ΅ ΠΏΠΎΡΠ²ΠΈ Π² ΡΠ΅Π»ΠΈΠ·Π° . ΠΠ±ΡΠΈΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π΅ ΠΏΡΠΎΡΡ: ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ ΠΏΠΎΡΠΎΡΠ²Π° ΠΏΡΡΡ Π΄ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡ 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:

ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠ°ΡΠ΅ ΡΠ»Π΅Π΄Π½ΠΈΡ 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 Π² ΡΠ²ΠΎΡΡΠ° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°. ΠΠ°ΠΊΠ²ΠΎ ΠΎΠ·Π½Π°ΡΠ°Π²Π° ΡΠΎΠ²Π°?
- ΠΡΠ΅ΠΊΠΈ ΠΎΠ±ΡΠ°Π·, ΡΡΠ±ΡΠ°Π½ ΠΎΡ Dockerfile, ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ Π΅Π΄ΠΈΠ½ Π΅ΡΠ°ΠΏ Π½Π° ΠΈΠΌΠ΅
dockerfile(ΠΏΠΎΠ²Π΅ΡΠ΅ Π·Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π°Ρ Π΅ΡΠ°ΠΏΠΈΡΠ΅ Π² werf ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ). - ΠΠ° Π΅ΡΠ°ΠΏΠ°
dockerfilewerf ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π° ΠΏΠΎΠ΄ΠΏΠΈΡ, ΠΊΠΎΠΉΡΠΎ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° Dockerfile. ΠΡΠΈ ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° Dockerfile ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΡΡ Π½Π° Π΅ΡΠ°ΠΏΠ°dockerfileΠΈ werf ΠΈΠ½ΠΈΡΠΈΠΈΡΠ° Π½ΠΎΠ²ΠΎ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΠΎΠ·ΠΈ Π΅ΡΠ°ΠΏ Ρ Π½ΠΎΠ²Π°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½Π° Dockerfile. ΠΠΊΠΎ ΠΎΠ±Π°ΡΠ΅ ΠΏΠΎΠ΄ΠΏΠΈΡΡΡ Π½Π΅ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Ρ, werf Π²Π·Π΅ΠΌΠ° ΠΎΠ±ΡΠ°Π·Π° ΠΎΡ ΠΊΠ΅ΡΠ° (ΠΏΠΎΠ²Π΅ΡΠ΅ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ Π² werf Π±Π΅ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°ΡΠΎ Π² ). - Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΡΠ±ΡΠ°Π½ΠΈΡΠ΅ ΠΎΠ±ΡΠ°Π·ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΈ Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ°
werf publish(ΠΈΠ»ΠΈwerf build-and-publish) ΠΈ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π·Π° ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ Π² Kubernetes. ΠΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΈΡΠ΅ ΠΎΠ±ΡΠ°Π·ΠΈ Π² Docker Registry ΡΠ΅ Π±ΡΠ΄Π°Ρ ΡΠΈΡΡΠ΅Π½ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π° ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° werf, Ρ.Π΅. ΡΠ΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈ ΠΎΠ±ΡΠ°Π·ΠΈ (ΠΏΠΎ-ΡΡΠ°ΡΠΈ ΠΎΡ N Π΄Π½ΠΈ), ΠΎΠ±ΡΠ°Π·ΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ Π½Π΅ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ Git ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅, ΠΈ ΠΏΠΎ Π΄ΡΡΠ³ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ.
ΠΠΎΠ²Π΅ΡΠ΅ ΠΎΡΠ½ΠΎΡΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡΠ΅ ΡΡΠΊ ΠΌΠΎΠΌΠ΅Π½ΡΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΡΡΠΈΡΠ΅ ΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ°:
- ;
- ;
- .
ΠΠ΅Π»Π΅ΠΆΠΊΠΈ ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ
1. ΠΡΠ½ΡΠ΅Π½ URL Π² ADD Π½Π΅ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°
Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½Π΅ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π²ΡΠ½ΡΠ΅Π½ URL Π² Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΡΠ° ADD. Werf Π½ΡΠΌΠ° Π΄Π° ΠΈΠ½ΠΈΡΠΈΠΈΡΠ° Π½ΠΎΠ²ΠΎ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ ΠΏΡΠΈ ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΡΠ΅ΡΡΡΡΠ° ΠΏΠΎ ΡΠΊΠ°Π·Π°Π½ URL. Π ΡΠΊΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ ΡΠ΅ ΠΏΠ»Π°Π½ΠΈΡΠ° Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΡΠ°Π·ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ.
2. ΠΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π΄ΠΎΠ±Π°Π²Ρ .git Π² ΠΎΠ±ΡΠ°Π·Π°
ΠΠ±ΡΠΎ Π²Π·Π΅ΡΠΎ, Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ .git Π² ΠΎΠ±ΡΠ°Π·Π° Π΅ Π»ΠΎΡΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° ΠΈ Π΅ΡΠΎ Π·Π°ΡΠΎ:
- ΠΠΊΠΎ
.gitΠΎΡΡΠ°Π²Π° Π² ΠΊΡΠ°ΠΉΠ½ΠΈΡ ΠΎΠ±ΡΠ°Π·, ΠΊΠΎΠ΅ΡΠΎ Π½Π°ΡΡΡΠ°Π²Π° ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΡΠ΅ : ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΊΡΠ°ΠΉΠ½ΠΈΡΡ ΠΎΠ±ΡΠ°Π· ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΡΠ²ΡΡΠ·Π°Π½ Ρ Π΅Π΄ΠΈΠ½ ΠΊΠΎΠΌΠΈΡ, Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈgit checkoutΠ½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ ΠΊΠΎΠΌΠΈΡ. -
.gitΡΠ²Π΅Π»ΠΈΡΠ°Π²Π° ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° ΠΎΠ±ΡΠ°Π·Π° (ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ Π³ΠΎΠ»ΡΠΌ, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π² Π½Π΅Π³ΠΎ Π½ΡΠΊΠΎΠ³Π° ΡΠ° Π±ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ Π³ΠΎΠ»Π΅ΠΌΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, Π° ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ° Π±ΠΈΠ»ΠΈ ΠΈΠ·ΡΡΠΈΡΠΈ). Π Π°Π·ΠΌΠ΅ΡΡΡ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΎΡΠΎ Π΄ΡΡΠ²ΠΎ, ΡΠ²ΡΡΠ·Π°Π½ΠΎ ΡΠ°ΠΌΠΎ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΊΠΎΠΌΠΈΡ, Π½ΡΠΌΠ° Π΄Π° Π·Π°Π²ΠΈΡΠΈ ΠΎΡ ΠΈΡΡΠΎΡΠΈΡΡΠ° Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Π² Git. ΠΡΠΈ ΡΠΎΠ²Π° Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π²Π°ΡΠΎΡΠΎ ΠΈΠ·ΡΡΠΈΠ²Π°Π½Π΅.gitΠΡ ΡΠΈΠ½Π°Π»Π½ΠΈΡ ΠΎΠ±ΡΠ°Π· Π½ΡΠΌΠ° Π΄Π° ΡΡΠ°Π±ΠΎΡΠΈ: ΠΎΠ±ΡΠ°Π·ΡΡ Π²ΡΠ΅ ΠΏΠ°ΠΊ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈ ΠΈΠ·Π»ΠΈΡΠ΅Π½ ΡΠ»ΠΎΠΉ β ΡΠ°ΠΊΠ° ΡΠ°Π±ΠΎΡΠΈ Docker. - 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-ΠΎΠ²ΠΈ... ΠΎΠΏΠΈΡΠ°ΠΉΡΠ΅ !
P.S. Π‘ΠΏΠΈΡΡΠΊ Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° ΠΏΠΎ ΡΠ΅ΠΌΠ°ΡΠ°
- ;
- ;
- ;
- ;
- ;
- ;
- .
ΠΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΡΡΡΠΎ Π² Π½Π°ΡΠΈΡ Π±Π»ΠΎΠ³: "Β».
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
