ΠΠ΄ΡΠ°Π²Π΅ΠΉΡΠ΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ!
ΠΠ½ΠΎΠ³ΠΎ ΠΈΡΠΊΠ°ΠΌ Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π° Π½Π°ΠΏΡΠ°Π²ΠΎ ΠΊΡΠΌ ΡΠ΅ΠΌΠ°ΡΠ°, Π½ΠΎ Π±ΠΈ Π±ΠΈΠ»ΠΎ ΠΏΠΎ-ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ Π΄Π° ΡΠ°Π·ΠΊΠ°ΠΆΠ° ΠΌΠ°Π»ΠΊΠΎ Π·Π° ΠΌΠΎΡΡΠ° ΠΈΡΡΠΎΡΠΈΡ:
ΠΠ»ΠΈΠ·Π°Π½Π΅
ΠΠ· ΡΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡ Ρ ΠΎΠΏΠΈΡ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠ΅Π΄Π½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ Π΅Π΄Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°, scala/java ΠΈ nodejs Π½Π° ΡΡΡΠ²ΡΡΠ°.
ΠΠΎΡΡΠ° Π΄ΡΠ»Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅ (ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Π½ΡΠΊΠΎΠ»ΠΊΠΎ-ΡΡΠΈ Π³ΠΎΠ΄ΠΈΠ½ΠΈ) Π±ΡΡ Π½Π° ΠΌΠ½Π΅Π½ΠΈΠ΅, ΡΠ΅ Docker Π΅ ΠΌΠ°Π½Π½Π° Π½Π΅Π±Π΅ΡΠ½Π° ΠΈ ΠΊΠ°ΡΠΎ ΡΡΠ»ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΡΠΈΠ½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΈ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π²ΡΠ΅ΠΊΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΡΡΠ±Π²Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°. Π ΠΎΡ ΡΠΎΠ²Π° ΡΠ»Π΅Π΄Π²Π°, ΡΠ΅ Π²ΡΠ΅ΠΊΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ Docker Π½Π° Π»ΠΎΠΊΠ°Π»Π½Π°ΡΠ° ΡΠΈ ΠΌΠ°ΡΠΈΠ½Π°. ΠΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΠΊΠ°ΠΆΠ΅ΡΠ΅ Π·Π° ΠΌΠΎΠ΅ΡΠΎ ΠΌΠ½Π΅Π½ΠΈΠ΅, ΠΏΡΠ΅Π³Π»Π΅Π΄Π°ΠΉΡΠ΅ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΈΡΠ΅ ΡΠ°Π±ΠΎΡΠ½ΠΈ ΠΌΠ΅ΡΡΠ°, ΠΊΠΎΠΈΡΠΎ ΡΠ° ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΈ Π½Π° ΡΡΡΠΈΡ hh. ΠΡΠ΅ΠΊΠΈ Π²ΡΠΎΡΠΈ ΡΡΠ΄ΡΡΠΆΠ° ΡΠΏΠΎΠΌΠ΅Π½Π°Π²Π°Π½Π΅ Π½Π° docker ΠΈ Π°ΠΊΠΎ Π³ΠΎ ΠΏΡΠΈΡΠ΅ΠΆΠ°Π²Π°ΡΠ΅, ΡΠΎΠ²Π° ΡΠ΅ Π±ΡΠ΄Π΅ Π²Π°ΡΠ΅ΡΠΎ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²ΠΎ π
ΠΠΎ ΠΏΡΡΡ ΡΠΈ ΡΡΠ΅ΡΠ½Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎ Ρ ΠΎΡΠ° Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΠΊΡΠΌ Docker ΠΈ Π½Π΅Π³ΠΎΠ²Π°ΡΠ° Π΅ΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ°. ΠΡΠΊΠΎΠΈ ΠΊΠ°Π·Π°Ρ Π°, ΡΠ΅ ΡΠΎΠ²Π° Π΅ ΡΠ΄ΠΎΠ±Π½ΠΎ Π½Π΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΠ° ΠΊΡΠΎΡ-ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ. ΠΡΠΎΡΠΈΡΠ΅ Π½Π΅ ΡΠ°Π·Π±ΡΠ°Ρ Π° Π·Π°ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ°Π±ΠΎΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ ΠΈ ΠΊΠ°ΠΊΠ²Π° ΠΏΠ΅ΡΠ°Π»Π±Π° ΡΠ΅ ΠΈΠΌΠ° ΠΎΡ ΡΠΎΠ²Π°, Π½Π° ΡΡΠ΅ΡΠΈΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠΎ Π½Π΅ ΠΈΠΌ ΠΏΡΠΊΠ°ΡΠ΅ ΠΈ Π½Π΅ ΡΠ΅ ΠΏΡΠΈΡΠ΅ΡΠ½ΡΠ²Π°Ρ Π° (ΠΏΡΠΎΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ Π° ΠΊΠΎΠ΄ ΠΈ ΡΠ΅ ΠΏΡΠΈΠ±ΡΠ°Ρ Π° - Π·Π°Π²ΠΈΠΆΠ΄Π°ΠΌ ΠΈΠΌ ΠΌΠ΅ΠΆΠ΄Ρ Π΄ΡΡΠ³ΠΎΡΠΎ :)
ΠΡΠΈΡΠΈΠ½ΠΈ Π·Π° ΡΠΏΠΎΡΡΠ΅Π±Π°
ΠΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π΄ΠΎΠΊΠ΅Ρ? ΠΠ΅ΡΠΎΡΡΠ½ΠΎ ΠΏΠΎΡΠ°Π΄ΠΈ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΏΡΠΈΡΠΈΠ½ΠΈ:
- ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ, 99% ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ
- ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° nginx Π·Π° ΡΡΠΎΠ½ΡΠ΅Π½Π΄ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΎΠΊΡΠΈ ΠΊΡΠΌ Π±Π΅ΠΊΠ΅Π½Π΄
- ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π² Π΄ΠΎΠΊΠ΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½ ΠΌΠΎΠ΅ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ Π½Π°Π²ΡΡΠΊΡΠ΄Π΅, ΠΊΡΠ΄Π΅ΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° Π΄ΠΎΠΊΠ΅Ρ, ΠΏΡΠΎΠ±Π»Π΅ΠΌΡΡ Ρ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ΡΠΎ ΡΠ΅ ΡΠ΅ΡΠ°Π²Π° Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ
- ΠΎΡΠΊΡΠΈΠ²Π°Π½Π΅ Π½Π° ΡΡΠ»ΡΠ³ΠΈ ΠΈΠ·Π²ΡΠ½ ΠΊΡΡΠΈΡΡΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ ΠΌΠΈΠΊΡΠΎΡΡΠ»ΡΠ³ΠΈ, Π²ΡΠ΅ΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ (ΡΠ²ΡΡΠ·Π°Π½ ΠΊΡΠΌ ΠΎΠ±ΡΠ° ΠΌΡΠ΅ΠΆΠ°) ΠΌΠΎΠΆΠ΅ Π»Π΅ΡΠ½ΠΎ Π΄Π° Π΄ΠΎΡΡΠΈΠ³Π½Π΅ Π΄ΠΎ Π΄ΡΡΠ³ ΡΡΠ΅Π· ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ, ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ
- ΠΠ°Π±Π°Π²Π½ΠΎ Π΅ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΈ Π΄Π° βΠΈΠ³ΡΠ°Π΅ΡΠ΅β Π² Π½Π΅Π³ΠΎ.
ΠΠ°ΠΊΠ²ΠΎ Π²ΠΈΠ½Π°Π³ΠΈ ΠΠ Ρ Π°ΡΠ΅ΡΠ²Π°ΠΌ Π² Π΄ΠΎΠΊΠ΅ΡΠ°:
- ΠΠ° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΠΌΠΎΠ΅ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈΠΌΠ°ΠΌ Π½ΡΠΆΠ΄Π° ΠΎΡ ΡΠ°ΠΌΠΈΡ Docker Π½Π° ΡΡΡΠ²ΡΡΠ°. ΠΠ°ΡΠΎ ΠΌΠΈ ΡΡΡΠ±Π²Π° ΡΠΎΠ²Π°, Π°ΠΊΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° ΠΌΠΈ ΡΠ°Π±ΠΎΡΡΡ Π½Π° jre ΠΈΠ»ΠΈ nodejs ΠΈ ΡΡΠ΅Π΄Π°ΡΠ° Π·Π° ΡΡΡ Π²Π΅ΡΠ΅ Π΅ Π½Π° ΡΡΡΠ²ΡΡΠ°?
- Π°ΠΊΠΎ ΠΈΡΠΊΠ°ΠΌ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΠΌ ΠΌΠΎΠ΅ΡΠΎ (ΡΠ°ΡΡΠ½ΠΎ) Π»ΠΎΠΊΠ°Π»Π½ΠΎ ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½ ΡΡΡΠ²ΡΡ, ΡΠΎΠ³Π°Π²Π° ΠΈΠΌΠ°ΠΌ Π½ΡΠΆΠ΄Π° ΠΎΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΎ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π½Π° Π΄ΠΎΠΊΠ΅ΡΠΈ, ΠΈΠΌΠ°ΠΌ Π½ΡΠΆΠ΄Π° ΡΠ΅Π³ΠΈΡΡΡΡΡΡ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π½ΡΠΊΡΠ΄Π΅ ΠΈ ΡΡΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΠΌ https, Π·Π°ΡΠΎΡΠΎ docker cli ΡΠ°Π±ΠΎΡΠΈ ΡΠ°ΠΌΠΎ ΠΏΡΠ΅Π· https. Π, ΠΏΠΎ Π΄ΡΠ²ΠΎΠ»ΠΈΡΠ΅... ΠΈΠΌΠ° ΠΎΠΏΡΠΈΠΈ, ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅, Π·Π° Π»ΠΎΠΊΠ°Π»Π½ΠΎ Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΡΠ΅Π·
docker save
ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΈΠ·ΠΏΡΠ°ΡΠ΅ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΡΠ΅Π· scp... ΠΠΎ ΡΠΎΠ²Π° ΡΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΡΠ»ΠΎΡΠΎ. Π ΠΎΡΠ²Π΅Π½ ΡΠΎΠ²Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΊΠ°ΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ βΠΏΠ°ΡΠ΅ΡΠΈΡΠ°β, Π΄ΠΎΠΊΠ°ΡΠΎ Π½Π΅ ΡΠ΅ ΠΏΠΎΡΠ²ΠΈ Π²Π°ΡΠ΅ΡΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ docker-compose
. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Π΅ ΡΠ°ΠΌΠΎ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ. Π’ΠΎΠ²Π° Π΅ Π²ΡΠΈΡΠΊΠΎ. Π’ΠΎΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠ°Π²ΠΈ Π½ΠΈΡΠΎ Π΄ΡΡΠ³ΠΎ.Docker-compose
ΠΈΠΌΠ° ΠΊΡΠΏ Π²Π΅ΡΡΠΈΠΈ Π½Π° ΡΠ²ΠΎΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ. ΠΠΎΠ»ΠΊΠΎΡΠΎ ΠΈ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΠΎ Π΄Π° Π΅, Π½Π΅ ΠΈΡΠΊΠ°ΠΌ Π΄Π° ΠΈΠΌ ΡΠ΅ΡΠ° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ°. ΠΡΠΌΠ° Π΄Π° ΠΌΠΈ ΡΡΡΠ±Π²Π° Π½ΠΈΠΊΡΠ΄Π΅ Π΄ΡΡΠ³Π°Π΄Π΅.- ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ°Π±ΠΎΡΡΡ Π² Π΅ΠΊΠΈΠΏ, ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ Ρ
ΠΎΡΠ° ΠΏΠΈΡΠ°Ρ Dockerfile ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΡΠΈΠ²ΠΎ, Π½Π΅ ΡΠ°Π·Π±ΠΈΡΠ°Ρ ΠΊΠ°ΠΊ ΡΠ΅ ΠΊΠ΅ΡΠΈΡΠ°, Π΄ΠΎΠ±Π°Π²ΡΡ Π²ΡΠΈΡΠΊΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΈ Π½Π΅Π½ΡΠΆΠ½ΠΎ ΠΊΡΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, Π½Π°ΡΠ»Π΅Π΄ΡΠ²Π°Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ° Π² Dockerhub ΠΈΠ»ΠΈ ΡΠ°ΡΡΠ½ΠΎ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, ΡΡΠ·Π΄Π°Π²Π°Ρ Π½ΡΠΊΠΎΠΈ
docker-compose
ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Ρ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΠΈ Π½ΠΈΡΠΎ Π½Π΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°. Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π³ΠΎΡΠ΄ΠΎ Π·Π°ΡΠ²ΡΠ²Π°Ρ, ΡΠ΅ Docker Π΅ Π³ΠΎΡΠΈΠ½, Π²ΡΠΈΡΠΊΠΎ ΡΠ°Π±ΠΎΡΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΎ Π·Π° ΡΡΡ , Π° HR Π²Π°ΠΆΠ½ΠΎ ΠΏΠΈΡΠ΅ Π² ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΡΠΎ ΠΌΡΡΡΠΎ: βΠΠΈΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Docker ΠΈ ΠΈΠΌΠ°ΠΌΠ΅ Π½ΡΠΆΠ΄Π° ΠΎΡ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ Ρ ΡΠ°ΠΊΡΠ² ΡΡΡΠ΄ΠΎΠ² ΠΎΠΏΠΈΡ.β - ΠΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΌΠ΅ ΠΏΡΠ΅ΡΠ»Π΅Π΄Π²Π°Ρ ΠΌΠΈΡΠ»ΠΈ Π·Π° ΠΏΠΎΠ²Π΄ΠΈΠ³Π°Π½Π΅ Π½Π° Π²ΡΠΈΡΠΊΠΎ Π² Docker: postgresql, kafka, redis. ΠΠ°Π»ΠΊΠΎ Π΅, ΡΠ΅ Π½Π΅ Π²ΡΠΈΡΠΊΠΎ ΡΠ°Π±ΠΎΡΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ, Π½Π΅ Π²ΡΠΈΡΠΊΠΎ Π΅ Π»Π΅ΡΠ½ΠΎ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅ ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅. Π’ΠΎΠ²Π° ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ Π½Π° ΡΡΠ΅ΡΠΈ ΡΡΡΠ°Π½ΠΈ, Π° Π½Π΅ ΠΎΡ ΡΠ°ΠΌΠΈΡΠ΅ Π΄ΠΎΡΡΠ°Π²ΡΠΈΡΠΈ. Π ΠΌΠ΅ΠΆΠ΄Ρ Π΄ΡΡΠ³ΠΎΡΠΎ, Π²Π΅Π΄Π½Π°Π³Π° Π²ΡΠ·Π½ΠΈΠΊΠ²Π° Π²ΡΠΏΡΠΎΡΡΡ: Π΄ΠΎΡΡΠ°Π²ΡΠΈΡΠΈΡΠ΅ Π½Π΅ ΡΠ΅ ΠΏΡΠΈΡΠ΅ΡΠ½ΡΠ²Π°Ρ Π΄Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡΠ΅ ΡΠΈ Π² Docker, Π·Π°ΡΠΎ Π΅ ΡΠΎΠ²Π°, ΠΌΠΎΠΆΠ΅ Π±ΠΈ Π·Π½Π°ΡΡ Π½Π΅ΡΠΎ?
- ΠΠΈΠ½Π°Π³ΠΈ Π²ΡΠ·Π½ΠΈΠΊΠ²Π° Π²ΡΠΏΡΠΎΡΡΡ Π·Π° ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡΠ° Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅ ΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°. ΠΈ ΡΠΎΠ³Π°Π²Π° ΡΠΈ ΠΌΠΈΡΠ»ΠΈΡΠ΅, ΡΡΡΠ±Π²Π° Π»ΠΈ ΠΏΡΠΎΡΡΠΎ Π΄Π° ΠΌΠΎΠ½ΡΠΈΡΠ°ΠΌ Ρ
ΠΎΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° ΠΈΠ»ΠΈ Π΄Π° ΡΡΠ·Π΄Π°ΠΌ Π΄ΠΎΠΊΠ΅Ρ ΡΠΎΠΌ ΠΈΠ»ΠΈ Π΄Π° Π½Π°ΠΏΡΠ°Π²Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π·Π° Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΉΡΠΎ ΡΠ΅Π³Π° Π΅
deprecated
? ΠΠΊΠΎ ΠΌΠΎΠ½ΡΠΈΡΠ°ΠΌ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ, ΡΠΎΠ³Π°Π²Π° ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΡΠ²Π΅ΡΡ, ΡΠ΅ uid ΠΈ gid Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΡΡΠ²ΠΏΠ°Π΄Π°Ρ Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ, ΠΊΠΎΠΉΡΠΎ Π΅ ΡΡΠ°ΡΡΠΈΡΠ°Π» ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, Π² ΠΏΡΠΎΡΠΈΠ²Π΅Π½ ΡΠ»ΡΡΠ°ΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅, ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ ΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, ΡΠ΅ Π±ΡΠ΄Π°Ρ ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ Ρ ΠΏΡΠ°Π²Π° Π½Π° root. ΠΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌvolume
ΡΠΎΠ³Π°Π²Π° Π΄Π°Π½Π½ΠΈΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ Π² Π½ΡΠΊΠΎΠΈ/usr/*
ΠΈ ΡΠ΅ ΠΈΠΌΠ° ΡΡΡΠ°ΡΠ° ΠΈΡΡΠΎΡΠΈΡ Ρ uid ΠΈ gid ΠΊΠ°ΡΠΎ Π² ΠΏΡΡΠ²ΠΈΡ ΡΠ»ΡΡΠ°ΠΉ. ΠΠΊΠΎ ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π½Π° ΡΡΠ΅ΡΠ° ΡΡΡΠ°Π½Π°, ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° ΠΈ Π΄Π° ΠΏΠΎΡΡΡΡΠΈΡΠ΅ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ° Π½Π° Π²ΡΠΏΡΠΎΡΠ°: βΠ² ΠΊΠΎΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡΡ Π·Π°ΠΏΠΈΡΠ²Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅?β
ΠΠΈΠ½Π°Π³ΠΈ Π½Π΅ ΠΌΠΈ Ρ
Π°ΡΠ΅ΡΠ²Π°ΡΠ΅ ΡΠ°ΠΊΡΡΡ, ΡΠ΅ ΡΡΡΠ±Π²Π°ΡΠ΅ Π΄Π° ΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π²Π°ΠΌ Ρ Docker ΡΠ²ΡΡΠ΄Π΅ Π΄ΡΠ»Π³ΠΎ Π² Π½Π°ΡΠ°Π»Π½ΠΈΡ Π΅ΡΠ°ΠΏ: Π Π°Π·Π±ΡΠ°Ρ
ΠΊΠ°ΠΊ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ, ΠΎΡ ΠΊΠ°ΠΊΠ²ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΠΌ, Π½Π°ΠΏΡΠ°Π²ΠΈΡ
Makefiles, ΠΊΠΎΠΈΡΠΎ ΡΡΠ΄ΡΡΠΆΠ°Ρ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΈ Π½Π° Π΄ΡΠ»Π³ΠΈ Docker ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ. ΠΡΠ°Π·Π΅Ρ
docker-compose, Π·Π°ΡΠΎΡΠΎ Π½Π΅ ΠΈΡΠΊΠ°Ρ
Π΄Π° Π½Π°ΡΡΠ° Π΄ΡΡΠ³ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π² Π΄ΠΎΠΊΠ΅Ρ Π΅ΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°. Π docker-compose up
Π’ΠΎΠ²Π° ΠΌΠ΅ ΠΏΡΠΈΡΠ΅ΡΠ½ΡΠ²Π°ΡΠ΅, ΠΎΡΠΎΠ±Π΅Π½ΠΎ Π°ΠΊΠΎ Π²ΡΠ΅ ΠΏΠ°ΠΊ ΡΠ΅ ΡΡΠ΅ΡΠ½Π°Ρ
Π° ΡΠ°ΠΌ build
ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ, Π° Π½Π΅ Π²Π΅ΡΠ΅ ΡΠ³Π»ΠΎΠ±Π΅Π½ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΡΠΈΡΠΊΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π½Π°ΠΈΡΡΠΈΠ½Π° ΠΈΡΠΊΠ°Ρ
, Π±Π΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ Π΄Π° Π½Π°ΠΏΡΠ°Π²Ρ ΠΏΡΠΎΠ΄ΡΠΊΡ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΈ Π±ΡΡΠ·ΠΎ. ΠΠΎ Π½Π΅ ΠΌΠΎΠΆΠ°Ρ
Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ° ΠΊΠ°ΠΊ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ Π΄ΠΎΠΊΠ΅Ρ.
ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΠΌΠ΅ Π²ΠΈ Ansible
ΠΠ°ΡΠΊΠΎΡΠΎ (ΠΏΡΠ΅Π΄ΠΈ ΡΡΠΈ ΠΌΠ΅ΡΠ΅ΡΠ°) ΡΠ°Π±ΠΎΡΠΈΡ Ρ Π΅ΠΊΠΈΠΏ Π½Π° DevOps, ΠΏΠΎΡΡΠΈ Π²ΡΠ΅ΠΊΠΈ ΡΠ»Π΅Π½ Π½Π° ΠΊΠΎΠΉΡΠΎ ΠΈΠΌΠ°ΡΠ΅ Π½Π΅Π³Π°ΡΠΈΠ²Π½ΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΠΊΡΠΌ Docker. ΠΠΎ ΠΏΡΠΈΡΠΈΠ½ΠΈ:
- Π΄ΠΎΠΊΠ΅Ρ ΠΏΡΠ°Π²ΠΈΠ»Π° iptables (Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅ Π² daemon.json)
- docker Π΅ Ρ Π³ΡΠ΅ΡΠΊΠΈ ΠΈ Π½ΡΠΌΠ° Π΄Π° Π³ΠΎ ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π° ΡΡΠ΅Π΄Π°
- Π°ΠΊΠΎ docker daemon ΡΠ΅ ΡΡΠΈΠ½Π΅, Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Ρ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° ΡΠ΅ ΡΡΠΈΠ²Π°Ρ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎ
- Π½ΡΠΌΠ° Π½ΡΠΆΠ΄Π° ΠΎΡ Π΄ΠΎΠΊΠ΅Ρ
- Π·Π°ΡΠΎ Π΄ΠΎΠΊΠ΅Ρ, Π°ΠΊΠΎ ΠΈΠΌΠ° Ansible ΠΈ Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ
ΠΠ° ΡΡΡΠ°ΡΠ° ΡΠ°Π±ΠΎΡΠ° ΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°Ρ
Ρ Π΄ΡΡΠ³ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ - Ansible. ΠΠ΅Π΄Π½ΡΠΆ ΡΡΡ
Π·Π° ΡΠΎΠ²Π°, Π½ΠΎ Π½Π΅ ΡΠ΅ ΠΎΠΏΠΈΡΠ°Ρ
Π΄Π° Π½Π°ΠΏΠΈΡΠ° ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ ΠΊΠ½ΠΈΠ³ΠΈ-ΠΈΠ³ΡΠΈ. Π ΡΠ΅Π³Π° Π·Π°ΠΏΠΎΡΠ½Π°Ρ
Π΄Π° ΡΠΈ ΠΏΠΈΡΠ° Π·Π°Π΄Π°ΡΠΈΡΠ΅ ΠΈ ΡΠΎΠ³Π°Π²Π° Π²ΠΈΠ·ΠΈΡΡΠ° ΠΌΠΈ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π½Π°ΠΏΡΠ»Π½ΠΎ! ΠΠ°ΡΠΎΡΠΎ ΡΠ°Π·Π±ΡΠ°Ρ
: Ansible ΠΈΠΌΠ° ΠΌΠΎΠ΄ΡΠ»ΠΈ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π΅Π΄Π½ΠΈ ΠΈ ΡΡΡΠΈ Π΄ΠΎΠΊΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ, ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΠΈ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΌΡΠ΅ΠΆΠΈ ΠΈ Ρ.Π½., Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ Π½Π΅ ΡΠ°ΠΌΠΎ Π»ΠΎΠΊΠ°Π»Π½ΠΎ, Π½ΠΎ ΠΈ Π½Π° ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½ΠΈ ΡΡΡΠ²ΡΡΠΈ! Π Π°Π΄ΠΎΡΡΡΠ° ΠΌΠΈ Π½ΡΠΌΠ°ΡΠ΅ Π³ΡΠ°Π½ΠΈΡΠΈ - Π½Π°ΠΌΠ΅ΡΠΈΡ
ΠΠΠ ΠΠΠΠΠ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΈ ΠΈΠ·Ρ
Π²ΡΡΠ»ΠΈΡ
Makefile ΠΈ docker-compose ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅, ΡΠ΅ Π±ΡΡ
Π° Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΈ Ρ yaml Π·Π°Π΄Π°ΡΠΈ. ΠΠΎΠ΄ΡΡ Π±Π΅ΡΠ΅ Π½Π°ΠΌΠ°Π»Π΅Π½ ΡΡΠ΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΊΠ°ΡΠΎ loop
, when
Π Π΄Ρ
Docker Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π° ΡΡΠ΅ΡΠΈ ΡΡΡΠ°Π½ΠΈ, ΠΊΠ°ΡΠΎ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ
ΠΠ°ΡΠΊΠΎΡΠΎ ΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°Ρ Ρ ssh ΡΡΠ½Π΅Π»ΠΈΡΠ΅. ΠΠΊΠ°Π·Π° ΡΠ΅, ΡΠ΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅ΡΠ½ΠΎ Π΄Π° βΠΏΡΠ΅ΠΏΡΠ°ΡΠΈΡΠ΅β ΠΏΠΎΡΡΠ° Π½Π° ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½ ΡΡΡΠ²ΡΡ ΠΊΡΠΌ Π»ΠΎΠΊΠ°Π»Π΅Π½ ΠΏΠΎΡΡ. ΠΡΠ΄Π°Π»Π΅ΡΠ΅Π½ΠΈΡΡ ΡΡΡΠ²ΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ»ΠΈ ΠΌΠ°ΡΠΈΠ½Π° Π² ΠΎΠ±Π»Π°ΠΊΠ°, ΠΈΠ»ΠΈ Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π°, ΡΠ°Π±ΠΎΡΠ΅ΡΠ° Π²ΡΠ² VirtualBox. ΠΠΊΠΎ ΠΌΠΎΡΡ ΠΊΠΎΠ»Π΅Π³Π° ΠΈΠ»ΠΈ Π°Π· ΡΠ΅ Π½ΡΠΆΠ΄Π°Π΅ΠΌ ΠΎΡ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ (ΠΈΠ»ΠΈ Π΄ΡΡΠ³ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π½Π° ΡΡΠ΅ΡΠ° ΡΡΡΠ°Π½Π°), ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΡΡΡΠ²ΡΡΠ° Ρ ΡΠΎΠ·ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΈ Π΄Π° Π³ΠΎ ΠΈΠ·ΠΊΠ»ΡΡΠΈΠΌ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΡΠ²ΡΡΡΡ Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ. ΠΡΠ΅Π½Π°ΡΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΡΡ Π΄Π°Π²Π° ΡΡΡΠΈΡ Π΅ΡΠ΅ΠΊΡ ΠΊΠ°ΡΠΎ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ, ΡΠ°Π±ΠΎΡΠ΅ΡΠ° Π² Π΄ΠΎΠΊΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ.
Π’Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΡΠ΅ΠΏΡΠ°ΡΠ° ΠΌΠΎΡ Π»ΠΎΠΊΠ°Π»Π΅Π½ ΠΏΠΎΡΡ ΠΊΡΠΌ ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½ ΡΡΡΠ²ΡΡ, ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ postgresql:
ssh -L 9000:localhost:5432 [ΠΈΠΌΠ΅ΠΉΠ» Π·Π°ΡΠΈΡΠ΅Π½]
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½ ΡΡΡΠ²ΡΡ ΡΠ΅ΡΠ°Π²Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° Π΅ΠΊΠΈΠΏΠ°. Π’Π°ΠΊΡΠ² ΡΡΡΠ²ΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΡ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ Π½Π°Π²Π΅Π΄Π½ΡΠΆ, Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Ρ postgresql, Π΄Π° ΡΠ°Π·Π±ΠΈΡΠ°Ρ Docker ΠΈ Π΄ΡΡΠ³ΠΈ ΡΡΠ½ΠΊΠΎΡΡΠΈ. ΠΠ° ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½ ΡΡΡΠ²ΡΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΡΡΡΠ°ΡΠ° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Π² ΡΠ°ΠΌΠΈΡ Docker, Π°ΠΊΠΎ Π΅ ΡΡΡΠ΄Π½ΠΎ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π° Π²Π΅ΡΡΠΈΡ. ΠΡΠΈΡΠΊΠΎ, ΠΎΡ ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ Π½ΡΠΆΠ΄Π°ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅, Π΅ Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ ssh Π΄ΠΎΡΡΡΠΏ!
ΠΠ°ΡΠΊΠΎΡΠΎ ΠΏΡΠΎΡΠ΅ΡΠΎΡ , ΡΠ΅ SSH ΡΡΠ½Π΅Π»ΠΈΡΠ΅ ΡΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ Π½Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ VPN! ΠΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ OpenVPN ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈ VPN ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Π΄Π° Π½Π°ΡΡΡΠΎΠΈΡΠ΅ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° ΠΈ Π΄Π° Ρ Π΄Π°Π΄Π΅ΡΠ΅ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅. Π’ΠΎΠ²Π° Π΅ ΡΠΎΠ»ΠΊΠΎΠ²Π° Π³ΠΎΡΠΈΠ½ΠΎ!
ΠΠ° ΡΠ°ΡΡΠΈΠ΅, AWS, GoogleCloud ΠΈ Π΄ΡΡΠ³ΠΈ Π²ΠΈ Π΄Π°Π²Π°Ρ Π΅Π΄Π½Π° Π³ΠΎΠ΄ΠΈΠ½Π° Π±Π΅Π·ΠΏΠ»Π°ΡΠ½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅, ΡΠ°ΠΊΠ° ΡΠ΅ Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅! Π’Π΅ ΡΠ° Π΅Π²ΡΠΈΠ½ΠΈ, Π°ΠΊΠΎ Π³ΠΈ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅, ΠΊΠΎΠ³Π°ΡΠΎ Π½Π΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ. ΠΠΈΠ½Π°Π³ΠΈ ΡΡΠΌ ΡΠ΅ ΡΡΠ΄Π΅Π» Π·Π°ΡΠΎ ΡΠ΅ ΠΌΠΈ ΡΡΡΠ±Π²Π° ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½ ΡΡΡΠ²ΡΡ ΠΊΠ°ΡΠΎ gcloud, ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°, ΡΠ΅ Π³ΠΈ Π½Π°ΠΌΠ΅ΡΠΈΡ .
ΠΠ°ΡΠΎ Π»ΠΎΠΊΠ°Π»Π½Π° Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΡΡΠ°ΡΠ° Alpine, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π°ΠΊΡΠΈΠ²Π½ΠΎ Π² Π΄ΠΎΠΊΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ. Π, ΠΈΠ»ΠΈ Π½ΡΠΊΠΎΠΈ Π΄ΡΡΠ³ΠΈ Π»Π΅ΠΊΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΡΡ Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° ΠΌΠ°ΡΠΈΠ½Π°ΡΠ° ΠΏΠΎ-Π±ΡΡΠ·ΠΎ.
Π ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ°: ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈ ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΠΈ Π΄ΡΡΠ³ΠΈ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ½ΠΈ Π΅ΠΊΡΡΡΠΈ Π½Π° ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½ΠΈ ΡΡΡΠ²ΡΡΠΈ ΠΈΠ»ΠΈ Π²ΡΠ² Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΊΡΡΠΈΡ. ΠΠ΅ ΠΌΠΈ ΡΡΡΠ±Π²Π° Π΄ΠΎΠΊΠ΅Ρ Π·Π° ΡΠ΅Π·ΠΈ ΡΠ΅Π»ΠΈ.
ΠΠ°Π»ΠΊΠΎ Π·Π° Π΄ΠΎΠΊΠ΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΡΠ° ΠΈ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ΡΠΎ
ΠΠ΅ΡΠ΅ ΠΏΠΈΡΠ°Ρ
ΠΠΈΠΆΠ΄Π°Π»ΠΈ Π»ΠΈ ΡΡΠ΅ Π½ΡΠΊΡΠ΄Π΅, ΠΊΡΠ΄Π΅ΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° ΡΠΎΡΡΡΠ΅Ρ ΠΏΡΠ΅Π½Π°ΡΡΡ ΡΠ²ΠΎΠΈΡΠ΅ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ ΡΠ°ΠΌΠΎ Π² Π΄ΠΎΠΊΠ΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅?
Π Π΅Π·ΡΠ»ΡΠ°ΡΡΡ ΠΎΡ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ ΡΠ° Π΄Π²ΠΎΠΈΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π·Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°; ΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΡΡ ΠΊΡΠΌ Π΄ΠΎΠΊΠ΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π΅ Π½Π°ΡΠ»Π΅Π΄Π΅Π½ΠΎ ΠΎΡ ΠΆΠ΅Π»Π°Π½Π°ΡΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°. Π§ΡΠ΄ΠΈΠ»ΠΈ Π»ΠΈ ΡΡΠ΅ ΡΠ΅ Π·Π°ΡΠΎ ΠΈΠΌΠ° ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² dockerhub? ΠΡΠ²Π΅Π΄Π΅ΡΠ΅ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ nginx, ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ 100500 XNUMX ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΎΡ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Ρ
ΠΎΡΠ°. Π’Π΅Π·ΠΈ Ρ
ΠΎΡΠ° Π½Π΅ ΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΈΠ»ΠΈ ΡΠ°ΠΌΠΈΡ nginx, ΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΡΠ° Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΎΡΠΈΡΠΈΠ°Π»Π΅Π½ nginx ΠΊΡΠΌ ΡΠ²ΠΎΡ Π΄ΠΎΠΊΠ΅Ρ ΠΎΠ±ΡΠ°Π· ΠΈ ΡΠ° Π³ΠΎ ΠΏΠΎΠ΄ΠΏΡΠ°Π²ΠΈΠ»ΠΈ ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π·Π° ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ ΠΏΡΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ.
ΠΠ°ΡΠΎ ΡΡΠ»ΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ Π΄Π° Π³ΠΎ ΡΡΡ
ΡΠ°Π½ΡΠ²Π°ΡΠ΅ Π² tgz, Π°ΠΊΠΎ Π½ΡΠΊΠΎΠΉ ΡΡΡΠ±Π²Π° Π΄Π° Π³ΠΎ ΡΡΠ°ΡΡΠΈΡΠ° Π² docker, ΡΠΎΠ³Π°Π²Π° Π³ΠΎ ΠΎΡΡΠ°Π²Π΅ΡΠ΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈ tgz ΠΊΡΠΌ Dockerfile, Π΄Π° Π½Π°ΡΠ»Π΅Π΄ΠΈ ΠΎΡ ΠΆΠ΅Π»Π°Π½Π°ΡΠ° ΡΡΠ΅Π΄Π° ΠΈ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΊΠΈΡΠ»ΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΡ ΡΠ°ΠΌΠΎΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² tgz. ΠΡΠ΅ΠΊΠΈ, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ Π΄ΠΎΠΊΠ΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΡΠ΅ Π·Π½Π°Π΅ ΠΊΠ°ΠΊΠ²ΠΎ Π΅ tgz ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ. ΠΡΠΎ ΠΊΠ°ΠΊ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ Π΄ΠΎΠΊΠ΅Ρ
Π ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ°: Π½ΡΠΌΠ°ΠΌ Π½ΡΠΆΠ΄Π° ΠΎΡ Π΄ΠΎΠΊΠ΅Ρ ΡΠ΅Π³ΠΈΡΡΡΡ, ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ Π½ΡΠΊΠ°ΠΊΡΠ² S3 ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π·Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΊΠ°ΡΠΎ google drive/dropbox
ΠΠΎΠΊΠ΅Ρ Π² CI
ΠΡΠΈΡΠΊΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Π² ΠΊΠΎΠΈΡΠΎ ΡΡΠΌ ΡΠ°Π±ΠΎΡΠΈΠ», ΡΠ° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ. ΠΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ° Ρ ΡΠ°Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΡΠΎΠΊΠΈ. Π’ΠΎΠ΅ΡΡ, ΡΠ΅ ΠΈΠΌΠ°Ρ Π΅Π΄Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π΅Π΄ΠΈΠ½ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅Π½ ΡΡΠ΅ΠΊ (Π΅, ΠΌΠΎΠΆΠ΅ Π±ΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΈΠ»ΠΈ ΡΡΠΈ Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅).
Π’Π΅Π·ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π΄ΠΎΠΊΠ΅Ρ Π½Π° ΡΠ²ΠΎΠΈΡΠ΅ ΡΡΡΠ²ΡΡΠΈ, ΠΊΡΠ΄Π΅ΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° CI ΠΏΡΠΎΡΠ΅ΡΡΡ. ΠΡΠΏΡΠΎΡ: ΠΠ°ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈ Π² Π΄ΠΎΠΊΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π½Π° Π²Π°ΡΠΈΡΠ΅ ΡΡΡΠ²ΡΡΠΈ? ΠΠ°ΡΠΎ ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²ΠΈΡΠ΅ ΡΡΠ΅Π΄Π° Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ Ansible playbook, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π½Π° nodejs, php, jdk, ΡΠ΅ ΠΊΠΎΠΏΠΈΡΠ° ssh ΠΊΠ»ΡΡΠΎΠ²Π΅ ΠΈ Ρ.Π½. Π½Π° ΡΡΡΠ²ΡΡΠ°, Π² ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠΈ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ?
Π‘Π΅Π³Π° ΡΠ°Π·Π±ΠΈΡΠ°ΠΌ, ΡΠ΅ ΡΠΎΠ²Π° Π΅ ΠΏΡΠΎΡΡΡΠ΅Π»Π²Π°Π½Π΅ Π² ΠΊΡΠ°ΠΊΠ°, Π·Π°ΡΠΎΡΠΎ Π΄ΠΎΠΊΠ΅ΡΡΡ Π½Π΅ Π½ΠΎΡΠΈ ΠΏΠ΅ΡΠ°Π»Π±Π° Ρ ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡΡΠ° ΡΠΈ. ΠΡΠΎΠ±Π»Π΅ΠΌΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΡΠ΅ΡΠ½Π°Ρ Ρ CI Π² Π΄ΠΎΠΊΠ΅Ρ:
- ΠΎΡΠ½ΠΎΠ²ΠΎ ΡΠ΅ Π½ΡΠΆΠ΄Π°Π΅ΡΠ΅ ΠΎΡ Π΄ΠΎΠΊΠ΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅. ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΡΡΡΡΠΈΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½ Π΄ΠΎΠΊΠ΅Ρ ΡΠ°ΠΉΠ».
- 90%, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠ΅ΠΏΡΠ°ΡΠΈΡΠ΅ Π½ΡΠΊΠΎΠΈ ssh ΠΊΠ»ΡΡΠΎΠ²Π΅, ΡΠ΅ΠΊΡΠ΅ΡΠ½ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° Π·Π°ΠΏΠΈΡΠ²Π°ΡΠ΅ Π² Π΄ΠΎΠΊΠ΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ.
- ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡΡ ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π° ΠΈ ΡΠΌΠΈΡΠ°, Π²ΡΠΈΡΠΊΠΈ ΠΊΠ΅ΡΠΎΠ²Π΅ ΡΠ΅ Π³ΡΠ±ΡΡ Π·Π°Π΅Π΄Π½ΠΎ Ρ Π½Π΅Π³ΠΎ. ΡΠ»Π΅Π΄Π²Π°ΡΠ°ΡΠ° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ ΡΠ΅ ΠΈΠ·ΡΠ΅Π³Π»ΠΈ ΠΎΡΠ½ΠΎΠ²ΠΎ Π²ΡΠΈΡΠΊΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΊΠΎΠ΅ΡΠΎ ΠΎΡΠ½Π΅ΠΌΠ° Π²ΡΠ΅ΠΌΠ΅ ΠΈ Π΅ Π½Π΅Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ, Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π΅ ΠΏΠ°ΡΠΈ.
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π΅ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈ Π² Π΄ΠΎΠΊΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ (Π½ΡΠΊΠΎΠ³Π° Π±ΡΡ ΡΠ°ΠΊΡΠ² ΡΠ΅Π½, Π½Π°ΠΈΡΡΠΈΠ½Π°, ΡΡΠΆΠ°Π»ΡΠ²Π°ΠΌ ΡΠ΅Π±Π΅ ΡΠΈ Π² ΠΌΠΈΠ½Π°Π»ΠΎΡΠΎ xD). Π java Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΠΈΠΌΠ°ΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π²Π΅ΡΡΠΈΠΈ ΠΈ Π΄Π° Π³ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Ρ Π΅Π΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π° ΡΠ°Π·ΠΈ, ΠΎΡ ΠΊΠΎΡΡΠΎ ΡΠ΅ Π½ΡΠΆΠ΄Π°Π΅ΡΠ΅ ΡΠ΅Π³Π°. Π nodejs Π΅ ΡΡΡΠΎΡΠΎ, ΠΈΠΌΠ° nvm.
ΠΡΠΎΠ΄ΡΠΊΡΠΈΡ
ΠΡΡΠ²Π°ΠΌ, ΡΠ΅ docker Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠΎΡΠ΅Π½ ΠΈ Π³ΡΠ²ΠΊΠ°Π² ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΡΠΎΠ²Π° Π΅ Π½Π΅Π³ΠΎΠ²ΠΈΡΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΠΊ (Π·Π²ΡΡΠΈ ΡΡΡΠ°Π½Π½ΠΎ, Π΄Π°). Π‘ Π½Π΅Π³ΠΎΠ²Π° ΠΏΠΎΠΌΠΎΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π»Π΅ΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠΈΡΡΡΠ°ΡΡΡΡ ΠΊΡΠΌ Π½Π΅Π³ΠΎ ΠΈ Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΊΡΠ΄Π΅ΡΠΎ ΡΡΡΠ±Π²Π° ΠΈ Π½Π΅ ΡΡΡΠ±Π²Π°. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΠΏΡΡΠΊΠ°Ρ ΡΠ²ΠΎΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ, Π½ΡΠΊΠΎΠΈ ΠΎΡ ΡΠ²ΠΎΠΈΡΠ΅ ΡΡΠ΅Π΄ΠΈ, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ Π²ΡΠΈΡΠΊΠΎ ΠΏΠ»Π°Π²Π½ΠΎ ΡΠ΅ Π²Π»ΠΈΠ²Π° Π² CI ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ. ΠΠΊΠΈΠΏΡΡ Π½Π° DevOps ΠΏΠΈΡΠ΅ Π½ΡΠΊΠ°ΠΊΡΠ² Π²ΠΈΠ΄ ΠΊΠΎΠ΄ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅Π·ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ.
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ Π΄ΠΎΠΊΠ΅Ρ ΡΠ°ΠΌΠΎ Π½Π° Π½Π°ΠΉ-Π½ΠΎΠ²ΠΎΡΠΎ Π΅ΡΠ°ΠΏ ΠΎΡ Π²Π°ΡΠΈΡ ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΏΡΠΎΡΠ΅Ρ, Π½Π΅ Π³ΠΎ Π²Π»Π°ΡΠ΅ΡΠ΅ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ° Π² Π½Π°ΡΠ°Π»ΠΎΡΠΎ. Π’ΠΎΠ²Π° Π½ΡΠΌΠ° Π΄Π° ΡΠ΅ΡΠΈ Π±ΠΈΠ·Π½Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ Π²ΠΈ. Π’ΠΎΠΉ ΡΠ°ΠΌΠΎ ΡΠ΅ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ Π½Π° ΠΠ Π£ΠΠ Π½ΠΈΠ²ΠΎ ΠΈ ΡΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈ ΡΠ²ΠΎΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ, Π²ΠΈΠ΅ ΡΠ΅ ΡΠ²ΡΡΡΠΈΡΠ΅ Π΄Π²ΠΎΠΉΠ½Π° ΡΠ°Π±ΠΎΡΠ°.
ΠΠΎΠ³Π°ΡΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Π΄ΠΎΠΊΠ΅Ρ: Π‘ΡΠΈΠ³Π½Π°Ρ Π΄ΠΎ ΠΈΠ·Π²ΠΎΠ΄Π°, ΡΠ΅ Π΄ΠΎΠΊΠ΅ΡΡΡ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±ΡΡ Π² ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π΄Π°Π΄Π΅Π½ ΠΏΡΠΎΡΠ΅Ρ, Π½ΠΎ Π½Π΅ ΠΈ Π² ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ
ΠΠΊΠΎ Π²ΡΠ΅ ΠΏΠ°ΠΊ ΡΠ΅ΡΠΈΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π΄ΠΎΠΊΠ΅Ρ, ΡΠΎΠ³Π°Π²Π°:
- Π±ΡΠ΄Π΅ΡΠ΅ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»Π½ΠΈ
- Π½Π΅ ΠΏΡΠΈΠ½ΡΠΆΠ΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π΄ΠΎΠΊΠ΅Ρ
- Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΈΡΠ°ΠΉΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ ΠΌΡ Π½Π° Π΅Π΄Π½ΠΎ ΠΌΡΡΡΠΎ, Π½Π΅ Π³ΠΎ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π°ΠΉΡΠ΅ Π²ΡΠ² Π²ΡΠΈΡΠΊΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π½Π° Dockefile ΠΈ docker-compose
PS:
- ΠΠ°ΡΠΊΠΎΡΠΎ ΠΏΠΎΠΏΠ°Π΄Π½Π°Ρ
ΠΎΠΏΠ°ΠΊΠΎΠ²ΡΠΈΠΊ ΠΈ ΡΠ΅ ΠΊΠ°Π·Π²Π°Ρ, ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±ΡΠ΅ Ρ Ansible ΠΈ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΎΠ±Π΅Π΄ΠΈΠ½ΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ (Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π΄ΠΎΠΊΠ΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅) ΡΡΡΠΎ Π·Π° Π΄ΠΎΠΊΠ΅Ρ, ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π° ΡΡΠ°ΡΠΈΡ
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ Π²ΠΈ Π·Π° ΡΠ΅ΡΠ΅Π½Π΅ΡΠΎ, ΠΆΠ΅Π»Π°Ρ Π²ΠΈ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΠ² Π²Π°ΡΠΈΡΠ΅ Π΄Π΅Π»Π° ΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΠΈ ΡΠ°Π±ΠΎΡΠ½ΠΈ Π΄Π½ΠΈ!
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com