ΠΠΎ-Π΄ΠΎΠ±ΡΠ΅ ΠΊΡΡΠ½ΠΎ ΠΎΡ ΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π½ΠΈΠΊΠΎΠ³Π°. ΠΠ»ΠΈ ΠΊΠ°ΠΊ ΠΏΠΎΡΡΠΈ Π½Π°ΠΏΡΠ°Π²ΠΈΡ ΠΌΠ΅ ΡΠ΅ΡΠΈΠΎΠ·Π½Π° Π³ΡΠ΅ΡΠΊΠ°, ΠΊΠ°ΡΠΎ Π½ΡΠΌΠ°Ρ ΠΌΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ Dockerfiles Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Π©Π΅ ΡΡΠ°Π²Π° Π²ΡΠΏΡΠΎΡ Π·Π°
- ΡΡΠ±ΠΈΡΠ°ΠΉΡΠ΅ ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°ΠΉΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ,
- ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Kubernetes,
- ΠΈΠ·ΡΡΠΈΠΉΡΠ΅ Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π°.
Π€ΠΈΠ»ΠΎΡΠΎΡΠΈΡΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ Π΄Π° ΡΠ΅ ΡΡΠ±Π΅ΡΠ°Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΠΎΡ Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ Π² Π΅Π΄ΠΈΠ½Π½Π° ΡΠ½ΠΈΡΠΈΡΠΈΡΠ°Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΊΠΎΡΡΠΎ Π΄Π°Π²Π° Π½Π° ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΈΡΠ΅ Π½Π° DevOps ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π°Π΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ°. ΠΠΊΠΎ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ ΠΏΠΎΠΌΠΎΡΠ½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ (ΠΊΠ°ΡΠΎ Helm ΠΈ Docker). ΠΠΊΠΎ Π½ΡΠΌΠ° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π΄Π΅Π½ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°ΠΌΠ΅ Π²ΡΠΈΡΠΊΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° ΡΠΎΠ²Π°.
ΠΡΠ΅Π΄ΠΈΡΡΠΎΡΠΈΡ: Π²Π°Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΠΊΠΎΠ»Π΅ΠΊΡΠΎΡ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
Π’ΠΎΠ²Π° ΡΠ΅ ΡΠ»ΡΡΠΈ Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² werf: Π»ΠΈΠΏΡΠ²Π°ΡΠ΅ Π½ΠΈ ΠΎΠ±ΠΈΡΠ°ΠΉΠ½ΠΈΡΡ Dockerfile. ΠΠΊΠΎ Π½Π°ΠΊΡΠ°ΡΠΊΠΎ ΡΠ΅ ΠΏΠΎΡΠΎΠΏΠΈΡΠ΅ Π² ΠΈΡΡΠΎΡΠΈΡΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΡΠΎΠ³Π°Π²Π° ΡΠΎΠ·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΠ΅ ΠΏΡΠΎΡΠ²ΠΈ ΠΎΡΠ΅ Π² ΠΏΡΡΠ²ΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π½Π° werf (ΡΠΎΠ³Π°Π²Π°
ΠΠΎΠΊΠ°ΡΠΎ ΡΡΠ·Π΄Π°Π²Π°Ρ ΠΌΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Docker ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π±ΡΡΠ·ΠΎ ΡΠ°Π·Π±ΡΠ°Ρ ΠΌΠ΅, ΡΠ΅ Dockerfile Π½Π΅ Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π·Π° Π½Π°Ρ Π·Π° Π½ΡΠΊΠΎΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ Π·Π°Π΄Π°ΡΠΈ:
- ΠΠ΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΠ° ΠΎΡ ΡΠ³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅ Π½Π° ΡΠΈΠΏΠΈΡΠ½ΠΈ ΠΌΠ°Π»ΠΊΠΈ ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠ³Π»Π°ΡΠ½ΠΎ ΡΠ»Π΅Π΄Π½Π°ΡΠ° ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π° ΡΡ
Π΅ΠΌΠ°:
- ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ,
- ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅ ΠΏΠ°ΠΊΠ΅Ρ ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π·Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ,
- ΡΡΠ±ΠΈΡΠ° Π°ΠΊΡΠΈΠ²ΠΈ,
- ΠΈ Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΎΡΠΎ, Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°ΠΉΡΠ΅ ΠΊΠΎΠ΄Π° Π² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π±ΡΡΠ·ΠΎ ΠΈ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ.
- ΠΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΏΡΠ°Π²ΡΡ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π²ΡΠ² ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΡΡΠ·Π΄Π°ΡΠ΅Π»ΡΡ ΡΡΡΠ±Π²Π° Π±ΡΡΠ·ΠΎ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ Π½ΠΎΠ² ΡΠ»ΠΎΠΉ, ΠΊΠ°ΡΠΎ ΠΊΠΎΡΠΈΠ³ΠΈΡΠ° ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅.
- ΠΠΊΠΎ Π½ΡΠΊΠΎΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΡΠ° ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ΠΈ, ΡΠΎΠ³Π°Π²Π° ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡΡ Π·Π°Π²ΠΈΡΠΈΠΌ Π΅ΡΠ°ΠΏ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½ ΠΎΡΠ½ΠΎΠ²ΠΎ.
ΠΠ½Π΅Ρ Π² Π½Π°ΡΠΈΡ ΠΊΡΠ°Π½ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, Π½ΠΎ ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΈΡΠ΅ ΠΆΠ΅Π»Π°Π½ΠΈΡ ΠΈ ΠΏΠΎΡΠΈΠ²ΠΈ Π±ΡΡ Π° ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅.
ΠΠ°ΡΠΎ ΡΡΠ»ΠΎ, Π±Π΅Π· Π΄Π° ΠΌΠΈΡΠ»ΠΈΠΌ Π΄Π²Π° ΠΏΡΡΠΈ, ΡΠ΅ Π²ΡΠΎΡΡΠΆΠΈΡ
ΠΌΠ΅ Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡ Π΅Π·ΠΈΠΊ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ (Π²ΠΈΠΆ ΠΎΡΠ΄ΠΎΠ»Ρ) ΠΈ ΡΡΡΠ³Π½ΠΈ Π½Π° ΠΏΡΡ - Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½ DSL! Π ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Ρ ΠΏΠΎΡΡΠ°Π²Π΅Π½ΠΈΡΠ΅ Π·Π°Π΄Π°ΡΠΈ Π±Π΅ΡΠ΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΎ Π΄Π° ΡΠ΅ ΠΎΠΏΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ Π½Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° Π΅ΡΠ°ΠΏΠΈ ΠΈ Π΄Π° ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΠ΅Π·ΠΈ Π΅ΡΠ°ΠΏΠΈ ΠΎΡ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅. Π Π³ΠΎ Π΄ΠΎΠΏΡΠ»Π½ΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΠΊΡΠ°Π½, ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠ΅Π²ΡΡΠ½Π° DSL Π² ΠΊΡΠ°ΠΉΠ½Π°ΡΠ° ΡΠ΅Π» β ΡΠ³Π»ΠΎΠ±Π΅Π½ΠΎΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. ΠΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ DSL Π±Π΅ΡΠ΅ Π² Ruby, Π½ΠΎ ΠΊΠ°ΡΠΎ
Π‘ΡΠ°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π·Π° dapp Π² Ruby
ΠΠ΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π·Π° werf Π½Π° YAML
ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡΡ Π½Π° ΠΊΠΎΠ»Π΅ΠΊΡΠΎΡΠ° ΡΡΡΠΎ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Ρ Ρ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ. ΠΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ ΠΏΡΠΎΡΡΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ°Ρ ΠΌΠ΅ Π½ΡΠΊΠ°ΠΊΡΠ² Π²ΡΠ΅ΠΌΠ΅Π½Π΅Π½ Dockerfile ΠΎΡ Π½Π°ΡΠ°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π² Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅, Π° ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π·Π°ΠΏΠΎΡΠ½Π°Ρ ΠΌΠ΅ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΠΌΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π²ΡΠ² Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ ΠΈ Π΄Π° ΠΏΡΠ°Π²ΠΈΠΌ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈ.
NB: Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½Π°ΡΠΈΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, ΠΊΠΎΠΉΡΠΎ ΡΠ°Π±ΠΎΡΠΈ ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ (Π² YAML) ΠΈ ΡΠ΅ Π½Π°ΡΠΈΡΠ° Stapel builder, Π²Π΅ΡΠ΅ ΡΠ΅ Π΅ ΠΏΡΠ΅Π²ΡΡΠ½Π°Π» Π² Π΄ΠΎΡΡΠ° ΠΌΠΎΡΠ΅Π½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ. ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΠΎ ΠΌΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π·Π°ΡΠ»ΡΠΆΠ°Π²Π° ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΡΡΠ°ΡΠΈΠΈ, Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π²
ΠΡΡΠ·Π½Π°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°
ΠΠΎ ΠΎΡΡΠ·Π½Π°Ρ ΠΌΠ΅, ΠΈ ΡΠΎ Π½Π΅ Π²Π΅Π΄Π½Π°Π³Π°, ΡΠ΅ ΡΠΌΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈΠ»ΠΈ Π΅Π΄Π½Π° Π³ΡΠ΅ΡΠΊΠ°: Π½Π΅ ΡΠΌΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡΠ° ΡΡΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΡΠ΅Π· ΡΡΠ°Π½Π΄Π°ΡΡΠ΅Π½ Dockerfile ΠΈ Π³ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°ΠΉΡΠ΅ Π² Π΅Π΄Π½Π° ΠΈ ΡΡΡΠ° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΡ ΠΊΡΠ°ΠΉ Π΄ΠΎ ΠΊΡΠ°ΠΉ (Ρ.Π΅. ΡΡΠ±ΠΈΡΠ°ΠΉΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π²Π½Π΅Π΄ΡΡΠ²Π°ΠΉΡΠ΅ ΠΈ Π³ΠΈ ΠΏΠΎΡΠΈΡΡΠ²Π°ΠΉΡΠ΅). ΠΠ°ΠΊ Π±ΠΈΡ ΡΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π² Kubernetes ΠΈ Π΄Π° Π½Π΅ Π²Π½Π΅Π΄ΡΠΈΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Dockerfile, Ρ.Π΅. ΡΡΠ°Π½Π΄Π°ΡΡΠ΅Π½ Π½Π°ΡΠΈΠ½ Π·Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π·Π° ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈ?..
ΠΠΌΠ΅ΡΡΠΎ ΠΎΡΠ³ΠΎΠ²ΠΎΡ Π½Π° ΡΠ°ΠΊΡΠ² Π²ΡΠΏΡΠΎΡ, ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΠΌΠ΅ Π½Π΅Π³ΠΎΠ²ΠΎΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. ΠΠΌΠΈ Π°ΠΊΠΎ Π²Π΅ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ Dockerfile (ΠΈΠ»ΠΈ Π½Π°Π±ΠΎΡ ΠΎΡ Dockerfiles) ΠΈ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ werf?
NB: ΠΠ΅ΠΆΠ΄Ρ Π΄ΡΡΠ³ΠΎΡΠΎ, Π·Π°ΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ werf? ΠΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ ΡΠ΅ ΡΠ²Π΅ΠΆΠ΄Π°Ρ Π΄ΠΎ ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ:
- ΠΏΡΠ»Π΅Π½ ΡΠΈΠΊΡΠ» Π½Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎΡΠΈΡΡΠ²Π°ΡΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ;
- Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π°Π²Π΅Π΄Π½ΡΠΆ ΠΎΡ Π΅Π΄Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ;
- ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ ΠΏΡΠΎΡΠ΅Ρ Π½Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π·Π° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΈ, ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΈ Ρ Helm.
ΠΠΎ-ΠΏΡΠ»Π΅Π½ ΡΠΏΠΈΡΡΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π½Π°ΠΌΠ΅ΡΠ΅Π½ Π½Π°
Π’Π°ΠΊΠ° ΡΠ΅, Π°ΠΊΠΎ ΠΏΠΎ-ΡΠ°Π½ΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡ ΠΌΠ΅ ΠΏΡΠ΅Π½Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° Dockerfile Π² Π½Π°ΡΠ°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, ΡΠ΅Π³Π° ΡΠΌΠ΅ ΡΠ°ΡΡΠ»ΠΈΠ²ΠΈ Π΄Π° ΠΊΠ°ΠΆΠ΅ΠΌ: βΠΠ΅ΠΊΠ° werf ΠΈΠ·Π³ΡΠ°Π΄ΠΈ Π²Π°ΡΠΈΡΠ΅ Dockerfiles!β
ΠΠ°ΠΊ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅?
ΠΡΠ»Π½ΠΎΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΡΠ΅ ΠΏΠΎΡΠ²ΠΈ Π² ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ΡΠΎ 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
Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π°Π²Π΅Π΄Π½ΡΠΆ ΠΎΡ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ 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 Π² ΡΠ²ΠΎΡΡΠ° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°. ΠΠ°ΠΊΠ²ΠΎ ΠΎΠ·Π½Π°ΡΠ°Π²Π° ΡΠΎΠ²Π°?
- ΠΡΡΠΊΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΎ ΠΎΡ Dockerfile, ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ Π΅Π΄ΠΈΠ½ Π΅ΡΠ°ΠΏ, Π½Π°ΡΠ΅ΡΠ΅Π½
dockerfile
(ΠΏΠΎΠ²Π΅ΡΠ΅ Π·Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊΠ²ΠΈ Π΅ΡΠ°ΠΏΠΈ ΠΈΠΌΠ° Π² werf, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ΡΡΠΊ ). - ΠΠ° ΡΡΠ΅Π½Π°
dockerfile
werf ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π° ΠΏΠΎΠ΄ΠΏΠΈΡ, ΠΊΠΎΠΉΡΠΎ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° Dockerfile. ΠΡΠΎΠΌΡΠ½Π°ΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° Dockerfile ΠΏΡΠΎΠΌΠ΅Π½Ρ ΡΠΈΠ³Π½Π°ΡΡΡΠ°ΡΠ° Π½Π° Π΅ΡΠ°ΠΏΠ°dockerfile
ΠΈ werf ΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠΈΡΠ° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΠΎΠ·ΠΈ Π΅ΡΠ°ΠΏ Ρ Π½ΠΎΠ²Π°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½Π° Dockerfile. ΠΠΊΠΎ ΠΏΠΎΠ΄ΠΏΠΈΡΡΡ Π½Π΅ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, ΡΠΎΠ³Π°Π²Π° werf Π²Π·Π΅ΠΌΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΎΡ ΠΊΠ΅ΡΠ° (ΠΏΠΎΠ²Π΅ΡΠ΅ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ Π² werf Π±Π΅ΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π²ΡΠΎΠ·ΠΈ Π΄ΠΎΠΊΠ»Π°Π΄ ). - ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° ΡΡΠ±ΡΠ°Π½ΠΈΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΈ Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ°
werf publish
(Orwerf build-and-publish
) ΠΈ Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π² Kubernetes. ΠΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΈΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΡΠ΅Π³ΠΈΡΡΡΡΠ° Π½Π° Docker ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΏΠΎΡΠΈΡΡΠ΅Π½ΠΈ ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° werf, Ρ.Π΅. ΡΠ΅ ΠΈΠΌΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ (ΠΏΠΎ-ΡΡΠ°ΡΠΈ ΠΎΡ N Π΄Π½ΠΈ), ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ Π½Π΅ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ Π½Π° Git, ΠΈ Π΄ΡΡΠ³ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ.
ΠΠΎΠ²Π΅ΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ Π·Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈΡΠ΅ ΡΡΠΊ ΡΠΎΡΠΊΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ°:
-
ΠΡΠΎΡΠ΅Ρ Π½Π° ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ ; -
ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π² Kubernetes ; -
ΠΡΠΎΡΠ΅Ρ Π½Π° ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ .
ΠΠ΅Π»Π΅ΠΆΠΊΠΈ ΠΈ ΠΏΡΠ΅Π΄ΠΏΠ°Π·Π½ΠΈ ΠΌΠ΅ΡΠΊΠΈ
1. ΠΡΠ½ΡΠ΅Π½ URL Π°Π΄ΡΠ΅Ρ Π² ADD Π½Π΅ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π²ΡΠ½ΡΠ΅Π½ URL Π°Π΄ΡΠ΅Ρ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½Π΅ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°. ADD
. Werf Π½ΡΠΌΠ° Π΄Π° Π·Π°Π΄Π΅ΠΉΡΡΠ²Π° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ΡΡΡΡ Π½Π° ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈΡ URL ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ. Π’Π°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΡΠ΅ ΠΏΠ»Π°Π½ΠΈΡΠ° Π΄Π° Π±ΡΠ΄Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΡΠΊΠΎΡΠΎ.
2. ΠΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ .git ΠΊΡΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
ΠΠ°ΠΉ-ΠΎΠ±ΡΠΎ ΠΊΠ°Π·Π°Π½ΠΎ, Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ .git
Π² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π΅ ΠΏΠΎΡΠΎΡΠ½Π° Π»ΠΎΡΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° ΠΈ Π΅ΡΠΎ Π·Π°ΡΠΎ:
- Π°ΠΊΠΎ
.git
ΠΎΡΡΠ°Π²Π° Π² ΠΊΡΠ°ΠΉΠ½ΠΈΡ ΠΎΠ±ΡΠ°Π·, ΡΠΎΠ²Π° Π½Π°ΡΡΡΠ°Π²Π° ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΡΠ΅12 ΡΠ°ΠΊΡΠΎΡΠ½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ : ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΎΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΡΠ²ΡΡΠ·Π°Π½ΠΎ Ρ Π΅Π΄ΠΈΠ½ ΠΊΠΎΠΌΠΈΡ, Π½Π΅ Π±ΠΈ ΡΡΡΠ±Π²Π°Π»ΠΎ Π΄Π° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈgit checkout
ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ. -
.git
ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π° ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ (Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ Π³ΠΎΠ»ΡΠΌΠΎ ΠΏΠΎΡΠ°Π΄ΠΈ ΡΠ°ΠΊΡΠ°, ΡΠ΅ Π³ΠΎΠ»Π΅ΠΌΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π²Π΅Π΄Π½ΡΠΆ ΡΠ° Π±ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΠΊΡΠΌ Π½Π΅Π³ΠΎ ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΈΠ·ΡΡΠΈΡΠΈ). Π Π°Π·ΠΌΠ΅ΡΡΡ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΎΡΠΎ Π΄ΡΡΠ²ΠΎ, ΡΠ²ΡΡΠ·Π°Π½ΠΎ ΡΠ°ΠΌΠΎ Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ ΠΊΠΎΠΌΠΈΡ, Π½ΡΠΌΠ° Π΄Π° Π·Π°Π²ΠΈΡΠΈ ΠΎΡ ΠΈΡΡΠΎΡΠΈΡΡΠ° Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Π² Git. Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π²Π°ΡΠΎΡΠΎ ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅.git
ΠΎΡ ΠΊΡΠ°ΠΉΠ½ΠΎΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½ΡΠΌΠ° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ: ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π²ΡΠ΅ ΠΎΡΠ΅ ΡΠ΅ ΠΏΡΠΈΠ΄ΠΎΠ±ΠΈΠ΅ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π΅Π½ ΡΠ»ΠΎΠΉ - ΡΠ°ΠΊΠ° ΡΠ°Π±ΠΎΡΠΈ Docker. - 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 ΡΠ°ΠΉΠ»Π°, ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈ Π½Π°ΠΎΠΊΠΎΠ»ΠΎ... ΠΠΏΠΈΡΠ²Π°ΠΌ
PS Π‘ΠΏΠΈΡΡΠΊ Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ ΡΠ΅ΠΌΠ°ΡΠ°
-
Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° Π·Π° Π±ΡΡΠ· ΡΡΠ°ΡΡ ; -
ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π½Π° ΡΡΠ·Π΄Π°ΡΠ΅Π»Ρ Π½Π° dockerfile ; -
Π΅ΡΠ°ΠΏΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π² werf ; -
ΠΡΠΎΡΠ΅Ρ Π½Π° ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ; -
ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π² Kubernetes ; -
ΠΡΠΎΡΠ΅Ρ Π½Π° ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ ; -
Stapel builder ΠΊΠ°ΡΠΎ Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° Π½Π° Dockerfile .
ΠΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΡΡΡΠΎ Π² Π½Π°ΡΠΈΡ Π±Π»ΠΎΠ³:
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com