ΠΡΡΡΠ΅ ΠΏΠΎΠ·Π΄Π½ΠΎ, ΡΠ΅ΠΌ Π½ΠΈΠΊΠΎΠ³Π΄Π°. ΠΠ»ΠΈ ΠΊΠ°ΠΊ ΠΌΡ ΡΡΡΡ Π½Π΅ Π΄ΠΎΠΏΡΡΡΠΈΠ»ΠΈ ΡΠ΅ΡΡΡΠ·Π½ΡΡ ΠΎΡΠΈΠ±ΠΊΡ, Π½Π΅ ΠΈΠΌΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΎΠ±ΡΡΠ½ΡΡ Dockerfiles Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΎΠ±ΡΠ°Π·ΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Π Π΅ΡΡ ΠΏΠΎΠΉΠ΄ΡΡ ΠΏΡΠΎ
- ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ°Π·Ρ,
- ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Kubernetes,
- ΡΠ΄Π°Π»ΡΡΡ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΠΎΠ±ΡΠ°Π·Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊ.
Π€ΠΈΠ»ΠΎΡΠΎΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° β ΡΠΎΠ±ΡΠ°ΡΡ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π² Π΅Π΄ΠΈΠ½ΡΡ ΡΠ½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ, Π΄Π°ΡΡΡΡ DevOps-ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ°ΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ. ΠΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½Ρ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΡΡΠΈΠ»ΠΈΡΡ (Π²ΡΠΎΠ΄Π΅ Helm ΠΈ Docker). ΠΡΠ»ΠΈ ΠΆΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ Π·Π°Π΄Π°ΡΠΈ Π½Π΅Ρ β ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΡΡ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π²ΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ.
ΠΡΠ΅Π΄ΡΡΡΠΎΡΠΈΡ: ΡΠ²ΠΎΠΉ ΡΠ±ΠΎΡΡΠΈΠΊ ΠΎΠ±ΡΠ°Π·ΠΎΠ²
Π’Π°ΠΊ ΠΈ ΡΠ»ΡΡΠΈΠ»ΠΎΡΡ ΡΠΎ ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠ² Π² werf: ΠΏΡΠΈΠ²ΡΡΠ½ΠΎΠ³ΠΎ Dockerfile Π½Π°ΠΌ Π½Π΅ Ρ
Π²Π°ΡΠ°Π»ΠΎ. ΠΡΠ»ΠΈ Π±Π΅Π³Π»ΠΎ ΠΎΠΊΡΠ½ΡΡΡΡΡ Π² ΠΈΡΡΠΎΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΡΠΎ ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΡΠΆΠ΅ Π² ΠΏΠ΅ΡΠ²ΡΡ
Π²Π΅ΡΡΠΈΡΡ
werf (ΡΠΎΠ³Π΄Π° Π΅ΡΠ΅
Π‘ΠΎΠ·Π΄Π°Π²Π°Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Docker-ΠΎΠ±ΡΠ°Π·Ρ, ΠΌΡ Π±ΡΡΡΡΠΎ ΠΏΠΎΠ½ΡΠ»ΠΈ, ΡΡΠΎ Dockerfile Π½Π°ΠΌ Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π²ΠΏΠΎΠ»Π½Π΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ Π·Π°Π΄Π°Ρ:
- ΠΠ΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΡΠΈΠΏΠΈΡΠ½ΡΠ΅ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΡΡ
Π΅ΠΌΠ΅:
- ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΎΠ±ΡΠ΅ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ,
- ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ bundle Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ,
- ΡΠΎΠ±ΡΠ°ΡΡ Π°ΡΡΠ΅ΡΡ,
- ΠΈ ΡΠ°ΠΌΠΎΠ΅ Π²Π°ΠΆΠ½ΠΎΠ΅ β ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΠΊΠΎΠ΄ Π² ΠΎΠ±ΡΠ°Π·Π΅ Π±ΡΡΡΡΠΎ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ.
- ΠΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡ Π² ΡΠ°ΠΉΠ»Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ±ΠΎΡΡΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡΡΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠ»ΠΎΠΉ ΠΏΡΡΠ΅ΠΌ Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠ°ΡΡΠ° Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ.
- ΠΡΠ»ΠΈ ΠΏΠΎΠΌΠ΅Π½ΡΠ»ΠΈΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΡΡ ΡΡΠ°Π΄ΠΈΡ.
ΠΠ° ΡΠ΅Π³ΠΎΠ΄Π½ΡΡΠ½ΠΈΠΉ Π΄Π΅Π½Ρ Π² Π½Π°ΡΠ΅ΠΌ ΡΠ±ΠΎΡΡΠΈΠΊΠ΅ Π΅ΡΡΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, Π½ΠΎ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΆΠ΅Π»Π°Π½ΠΈΡ ΠΈ ΠΏΠΎΠ·ΡΠ²Ρ Π±ΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠ²Ρ.
Π ΠΎΠ±ΡΠ΅ΠΌ, Π½Π΅Π΄ΠΎΠ»Π³ΠΎ Π΄ΡΠΌΠ°Ρ, ΠΌΡ Π²ΠΎΠΎΡΡΠΆΠΈΠ»ΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ (ΡΠΌ. Π½ΠΈΠΆΠ΅) ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΈΠ»ΠΈΡΡ Π² ΠΏΡΡΡ β ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ DSL! Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡ ΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΌ Π·Π°Π΄Π°ΡΠ°ΠΌ, ΠΎΠ½ Π±ΡΠ» ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠΎ ΡΡΠ°Π΄ΠΈΡΠΌ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΡΡΠΈΡ
ΡΡΠ°Π΄ΠΈΠΉ ΠΎΡ ΡΠ°ΠΉΠ»ΠΎΠ². Π Π΄ΠΎΠΏΠΎΠ»Π½ΡΠ» Π΅Π³ΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠ±ΠΎΡΡΠΈΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π» DSL Π² ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΡΠ΅Π»Ρ β ΡΠΎΠ±ΡΠ°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ°Π·. Π‘Π½Π°ΡΠ°Π»Π° DSL Π±ΡΠ» Π½Π° Ruby, Π° ΠΏΠΎ ΠΌΠ΅ΡΠ΅
Π‘ΡΠ°ΡΡΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ Π΄Π»Ρ dapp Π½Π° Ruby
ΠΠΊΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ Π΄Π»Ρ werf Π½Π° YAML
ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠ°Π±ΠΎΡΡ ΡΠ±ΠΎΡΡΠΈΠΊΠ° ΡΠΎΠΆΠ΅ ΠΌΠ΅Π½ΡΠ»ΡΡ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ. Π‘Π½Π°ΡΠ°Π»Π° ΠΌΡ ΠΏΡΠΎΡΡΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π»ΠΈ Π½Π° Π»Π΅ΡΡ Π½Π΅ΠΊΠΈΠΉ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ Dockerfile ΠΈΠ· Π½Π°ΡΠ΅ΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, Π° ΠΏΠΎΡΠΎΠΌ ΡΡΠ°Π»ΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΠ±ΠΎΡΠΎΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°Ρ ΠΈ Π΄Π΅Π»Π°ΡΡ commit.
NB: ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°Ρ ΡΠ±ΠΎΡΡΠΈΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎ ΡΠ²ΠΎΠΈΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΠΎΠΌ (Π² YAML) ΠΈ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Stapel-ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠΌ, ΡΠΆΠ΅ ΡΠ°Π·Π²ΠΈΠ»ΡΡ Π² Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΌΠΎΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ. ΠΠ³ΠΎ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π·Π°ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ
ΡΡΠ°ΡΠ΅ΠΉ, Π° ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ·Π½Π°ΡΡ ΠΈΠ·
ΠΡΠΎΠ·Π½Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ
ΠΠΎ ΠΌΡ ΠΏΠΎΠ½ΡΠ»ΠΈ, ΠΏΡΠΈΡΠ΅ΠΌ Π½Π΅ ΡΡΠ°Π·Ρ, ΡΡΠΎ ΡΠΎΠ²Π΅ΡΡΠΈΠ»ΠΈ ΠΎΠ΄Π½Ρ ΠΎΡΠΈΠ±ΠΊΡ: Π½Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΠΎΠ±ΡΠ°Π·Ρ ΡΠ΅ΡΠ΅Π· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Dockerfile ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ Π² ΡΡ ΠΆΠ΅ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ (Ρ.Π΅. ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΠΎΠ±ΡΠ°Π·Ρ, Π΄Π΅ΠΏΠ»ΠΎΠΈΡΡ ΠΈ ΡΠΈΡΡΠΈΡΡ ΠΈΡ ). ΠΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ Π΄Π΅ΠΏΠ»ΠΎΡ Π² Kubernetes ΠΈ Π½Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Dockerfile, Ρ.Π΅. ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΎΠ±ΡΠ°Π·ΠΎΠ² Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ²?..
ΠΠΌΠ΅ΡΡΠΎ ΠΎΡΠ²Π΅ΡΠ° Π½Π° ΡΠ°ΠΊΠΎΠΉ Π²ΠΎΠΏΡΠΎΡ ΠΌΡ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌ Π΅Π³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. Π§ΡΠΎ Π΄Π΅Π»Π°ΡΡ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ ΡΠΆΠ΅ ΠΈΠΌΠ΅Π΅ΡΡΡ Dockerfile (ΠΈΠ»ΠΈ Π½Π°Π±ΠΎΡ DockerfileβΠΎΠ²) ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ werf?
NB: Π ΡΠ»ΠΎΠ²Ρ, Ρ ΡΠ΅Π³ΠΎ Π±Ρ Π²Π°ΠΌ Π²ΠΎΠΎΠ±ΡΠ΅ Π·Π°Ρ ΠΎΡΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ werf? ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠΈΡΠΈ ΡΠ²ΠΎΠ΄ΡΡΡΡ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ:
- ΠΏΠΎΠ»Π½ΡΠΉ ΡΠΈΠΊΠ» ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π²ΠΊΠ»ΡΡΠ°Ρ ΠΎΡΠΈΡΡΠΊΡ ΠΎΠ±ΡΠ°Π·ΠΎΠ²;
- Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠ±ΠΎΡΠΊΠΎΠΉ ΡΡΠ°Π·Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΎΠ±ΡΠ°Π·ΠΎΠ² ΠΈΠ· Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³Π°;
- ΡΠ»ΡΡΡΠ΅Π½Π½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π΄Π΅ΠΏΠ»ΠΎΡ ΡΠ°ΡΡΠΎΠ², ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΡ Ρ Helm.
Π‘ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½ΡΠΌ ΠΈΡ
ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Π½Π°
ΠΡΠ°ΠΊ, Π΅ΡΠ»ΠΈ ΡΠ°Π½ΡΡΠ΅ ΠΌΡ Π±Ρ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ Dockerfile Π½Π° Π½Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ³, ΡΠΎ ΡΠ΅ΠΏΠ΅ΡΡ Ρ ΡΠ°Π΄ΠΎΡΡΡΡ ΡΠΊΠ°ΠΆΠ΅ΠΌ: Β«ΠΠΎΠ·Π²ΠΎΠ»ΡΡΠ΅ werf ΡΠΎΠ±ΡΠ°ΡΡ Π²Π°ΡΠΈ DockerfileβΡ!Β»
ΠΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ?
ΠΠΎΠ»Π½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π² ΡΠ΅Π»ΠΈΠ·Π΅ 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 image Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Π½Π°
ΠΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ?
Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ±ΠΎΡΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΡΠ΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΊΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΡΠ»ΠΎΡΠ² Π² Docker. ΠΠ΄Π½Π°ΠΊΠΎ, ΡΡΠΎ Π²Π°ΠΆΠ½ΠΎ, werf ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Dockerfile Π² ΡΠ²ΠΎΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ. Π§ΡΠΎ ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ?
- ΠΠ°ΠΆΠ΄ΡΠΉ ΠΎΠ±ΡΠ°Π·, ΡΠΎΠ±ΡΠ°Π½Π½ΡΠΉ ΠΈΠ· Dockerfile, ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ stage ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ
dockerfile
(ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΏΡΠΎ ΡΠΎ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ stages Π² werf, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΈΡΠ°ΡΡΠ·Π΄Π΅ΡΡ ). - ΠΠ»Ρ stageβΠ°
dockerfile
werf ΡΠ°ΡΡΡΠΈΡΡΠ²Π°Π΅Ρ ΡΠΈΠ³Π½Π°ΡΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Dockerfile. ΠΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Dockerfile ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠΌΠ΅Π½Π° ΡΠΈΠ³Π½Π°ΡΡΡΡ ΡΡΠ°Π΄ΠΈΠΈdockerfile
ΠΈ werf ΠΈΠ½ΠΈΡΠΈΠΈΡΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΡΠ±ΠΎΡΠΊΡ ΡΡΠΎΠΉ ΡΡΠ°Π΄ΠΈΠΈ Ρ Π½ΠΎΠ²ΡΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΠΎΠΌ Dockerfile. ΠΡΠ»ΠΈ ΠΆΠ΅ ΡΠΈΠ³Π½Π°ΡΡΡΠ° Π½Π΅ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ, ΡΠΎ werf Π±Π΅ΡΠ΅Ρ ΠΎΠ±ΡΠ°Π· ΠΈΠ· ΠΊΡΡΠ° (ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΈΠ³Π½Π°ΡΡΡ Π² werf ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π»ΠΎΡΡ Π²ΡΡΠΎΠΌ Π΄ΠΎΠΊΠ»Π°Π΄Π΅ ). - ΠΠ°Π»Π΅Π΅ ΡΠΎΠ±ΡΠ°Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ°Π·Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ
werf publish
(ΠΈΠ»ΠΈwerf build-and-publish
) ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π΄Π΅ΠΏΠ»ΠΎΡ Π² Kubernetes. ΠΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ°Π·Ρ Π² Docker Registry Π±ΡΠ΄ΡΡ ΡΠΈΡΡΠΈΡΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ ΠΎΡΠΈΡΡΠΊΠΈ werf, Ρ.Π΅. ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΎΡΠΈΡΡΠΊΠ° ΡΡΠ°ΡΡΡ ΠΎΠ±ΡΠ°Π·ΠΎΠ² (ΡΡΠ°ΡΡΠ΅ N Π΄Π½Π΅ΠΉ), ΠΎΠ±ΡΠ°Π·ΠΎΠ², ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ Π½Π΅ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΌΠΈ Git-Π²Π΅ΡΠΊΠ°ΠΌΠΈ, ΠΈ ΠΏΠΎ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΠΌ.
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠ± ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π·Π΄Π΅ΡΡ ΠΌΠΎΠΌΠ΅Π½ΡΠ°Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ·Π½Π°ΡΡ ΠΈΠ· Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ:
-
ΠΡΠΎΡΠ΅ΡΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ ; -
ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ Π΄Π΅ΠΏΠ»ΠΎΡ Π² Kubernetes ; -
ΠΡΠΎΡΠ΅ΡΡ ΠΎΡΠΈΡΡΠΊΠΈ .
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎΡΡΠΈ
1. ΠΠ½Π΅ΡΠ½ΠΈΠΉ URL Π² ADD Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ
ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ URL Π² Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π΅ ADD
. Werf Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΠΈΡΠΈΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΡΠ±ΠΎΡΠΊΡ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠ΅ΡΡΡΡΠ° ΠΏΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ URL. Π ΡΠΊΠΎΡΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ.
2. ΠΠ΅Π»ΡΠ·Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ .git Π² ΠΎΠ±ΡΠ°Π·
ΠΠΎΠΎΠ±ΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ .git
Π² ΠΎΠ±ΡΠ°Π· β ΠΏΠΎΡΠΎΡΠ½Π°Ρ ΠΏΠ»ΠΎΡ
Π°Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° ΠΈ Π²ΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ:
- ΠΡΠ»ΠΈ
.git
ΠΎΡΡΠ°Π΅ΡΡΡ Π² ΡΠΈΠ½Π°Π»ΡΠ½ΠΎΠΌ ΠΎΠ±ΡΠ°Π·Π΅, ΡΡΠΎ Π½Π°ΡΡΡΠ°Π΅Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ12 factor app : ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΡΠΎΠ³ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ°Π· Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ²ΡΠ·Π°Π½ Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠΌ, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ΄Π΅Π»Π°ΡΡgit checkout
ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠ°. -
.git
ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΠ±ΡΠ°Π·Π° (ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π² Π½Π΅Π³ΠΎ ΠΊΠΎΠ³Π΄Π°-ΡΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ, Π° ΠΏΠΎΡΠΎΠΌ ΡΠ΄Π°Π»ΠΈΠ»ΠΈ). Π Π°Π·ΠΌΠ΅Ρ ΠΆΠ΅ work-tree, ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠΌ, Π½Π΅ Π±ΡΠ΄Π΅Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ ΠΈΡΡΠΎΡΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π² 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. Π‘ΠΏΠΈΡΠΎΠΊ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΡΠ΅ΠΌΠ΅
-
ΠΠ°ΠΉΠ΄Ρ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΡΡΠ°ΡΡΠ° ; -
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ dockerfile builder ; -
Π£ΡΡΡΠΎΠΉΡΡΠ²ΠΎ stages Π² werf ; -
ΠΡΠΎΡΠ΅ΡΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΎΠ±ΡΠ°Π·ΠΎΠ² ; -
ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ Π΄Π΅ΠΏΠ»ΠΎΡ Π² Kubernetes ; -
ΠΡΠΎΡΠ΅ΡΡ ΠΎΡΠΈΡΡΠΊΠΈ ; -
Stapel-ΡΠ±ΠΎΡΡΠΈΠΊ ΠΊΠ°ΠΊ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° Dockerfile .
Π§ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π² Π½Π°ΡΠ΅ΠΌ Π±Π»ΠΎΠ³Π΅: Β«
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com