ΠΠ΄ΡΠ°Π²ΠΎ Π½Π° ΡΠΈΡΠ΅!
ΠΠ°Π²ΠΈΡΡΠΈΠ½Π° ΡΠ°ΠΊΠ°ΠΌ Π΄Π° Π½Π°Π²Π»Π΅Π·Π°ΠΌ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π½Π° ΡΠ΅ΠΌΠ°ΡΠ°, Π½ΠΎ Π±ΠΈ Π±ΠΈΠ»ΠΎ ΠΏΠΎΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ Π΄Π° ΠΊΠ°ΠΆΠ°ΠΌ ΠΌΠ°Π»ΠΊΡ Π·Π° ΠΌΠΎΡΠ°ΡΠ° ΠΏΡΠΈΠΊΠ°Π·Π½Π°:
ΠΠ»Π΅Π³ΡΠ²Π°ΡΠ΅
ΠΠ°Ρ ΡΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅Ρ ΡΠΎ ΠΈΡΠΊΡΡΡΠ²ΠΎ Π²ΠΎ ΡΠ°Π·Π²ΠΎΡ Π½Π° frontend Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π·Π° Π΅Π΄Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°, scala/java ΠΈ nodejs Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ.
ΠΠΎΡΡΠ° Π΄ΠΎΠ»Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅ (Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠ²Π½ΠΎ Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΠΈΠ»ΠΈ ΡΡΠΈ Π³ΠΎΠ΄ΠΈΠ½ΠΈ) Π±Π΅Π² Π½Π° ΠΌΠΈΡΠ»Π΅ΡΠ΅ Π΄Π΅ΠΊΠ° Docker Π΅ ΠΌΠ°Π½Π° ΠΎΠ΄ Π½Π΅Π±ΠΎΡΠΎ ΠΈ Π²ΠΎΠΎΠΏΡΡΠΎ ΠΌΠ½ΠΎΠ³Ρ ΠΊΡΠ» Π°Π»Π°ΡΠΊΠ° ΠΈ Π°ΠΏΡΠΎΠ»ΡΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΡ ΡΠ°Π·Π²ΠΈΠ²Π°Ρ ΡΡΠ΅Π±Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ° ΠΊΠΎΡΠΈΡΡΠΈ. Π ΠΎΠ΄ ΠΎΠ²Π° ΠΏΡΠΎΠΈΠ·Π»Π΅Π³ΡΠ²Π° Π΄Π΅ΠΊΠ° ΡΠ΅ΠΊΠΎΡ ΡΠ°Π·Π²ΠΈΠ²Π°Ρ ΡΡΠ΅Π±Π° Π΄Π° ΠΈΠΌΠ° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΎ 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 Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ Π²ΠΎ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΡ ΡΠ΅ ΡΠΎΠ²ΠΏΠ°ΡΠ°Π°Ρ ΡΠΎ ID Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ ΠΊΠΎΡ Π³ΠΎ ΡΡΠ°ΡΡΡΠ²Π°Π» ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΡ, ΠΈΠ½Π°ΠΊΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄Π΅Π½ΠΈ ΠΎΠ΄ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΡ ΡΠ΅ ΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ°Π°Ρ ΡΠΎ ΠΏΡΠ°Π²Π° Π½Π° root. ΠΠΊΠΎ ΠΊΠΎΡΠΈΡΡΠ°ΠΌvolume
ΡΠΎΠ³Π°Ρ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ ΡΠ΅ ΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ°Π°Ρ Π²ΠΎ Π½Π΅ΠΊΠΎΠΈ/usr/*
ΠΈ ΡΠ΅ ΠΈΠΌΠ° ΠΈΡΡΠ° ΠΏΡΠΈΠΊΠ°Π·Π½Π° ΡΠΎ ΡΠΈΠ΄ ΠΈ Π³ΠΈΠ΄ ΠΊΠ°ΠΊΠΎ Π²ΠΎ ΠΏΡΠ²ΠΈΠΎΡ ΡΠ»ΡΡΠ°Ρ. ΠΠΊΠΎ ΡΡΠ°ΡΡΡΠ²Π°ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΎΠ΄ ΡΡΠ΅ΡΠ° ΡΡΡΠ°Π½Π°, ΡΡΠ΅Π±Π° Π΄Π° ΡΠ° ΠΏΡΠΎΡΠΈΡΠ°ΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°ΡΠ° ΠΈ Π΄Π° Π³ΠΎ ΠΏΠΎΠ±Π°ΡΠ°ΡΠ΅ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠΎΡ Π½Π° ΠΏΡΠ°ΡΠ°ΡΠ΅ΡΠΎ: βΠ²ΠΎ ΠΊΠΎΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΈ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΡΠ° Π·Π°ΠΏΠΈΡΡΠ²Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ?
ΠΡΡΠ΅ΠΊΠΎΠ³Π°Ρ Π½Π΅ ΠΌΠΈ ΡΠ΅ Π΄ΠΎΠΏΠ°ΡΠ°ΡΠ΅ ΡΠΎΠ° ΡΡΠΎ ΠΏΡΠ΅Π΄ΠΎΠ»Π³ΠΎ ΠΌΠΎΡΠ°Π² Π΄Π° ΡΠ΅ ΡΠ΅ΠΏΠΊΠ°ΠΌ ΡΠΎ ΠΠΎΠΊΠ΅Ρ Π²ΠΎ ΠΏΠΎΡΠ΅ΡΠ½Π°ΡΠ° ΡΠ°Π·Π°: Π‘ΡΠ°ΡΠΈΠ² ΠΊΠ°ΠΊΠΎ Π΄Π° ΡΡΠ°ΡΡΡΠ²Π°ΠΌ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ, ΠΎΠ΄ ΠΊΠΎΠΈ ΡΠ»ΠΈΠΊΠΈ Π΄Π° ΡΡΠ°ΡΡΡΠ²Π°ΠΌ, Π½Π°ΠΏΡΠ°Π²ΠΈΠ² Make-Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ ΡΡΠΎ ΡΠΎΠ΄ΡΠΆΠ΅Π° ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΈ Π½Π° Π΄ΠΎΠ»Π³ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π½Π° Docker. ΠΠΎ ΠΌΡΠ°Π·Π΅Π² docker-compose Π·Π°ΡΠΎΠ° ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊΠ°Π² Π΄Π° Π½Π°ΡΡΠ°ΠΌ Π΄ΡΡΠ³Π° Π°Π»Π°ΡΠΊΠ° Π²ΠΎ Π΅ΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠΎΡ Π½Π° Π΄ΠΎΠΊΠ΅Ρ. Π docker-compose up
ΠΠΈ ΠΏΡΠ΅ΡΠ΅ΡΠ΅, ΠΎΡΠΎΠ±Π΅Π½ΠΎ Π°ΠΊΠΎ ΡΠ΅ ΡΡΡΠ΅ ΡΠ΅ ΡΡΠ΅ΡΠ½Π°Π° ΡΠ°ΠΌΡ build
ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ, Π½Π°ΠΌΠ΅ΡΡΠΎ Π²Π΅ΡΠ΅ ΡΠΎΡΡΠ°Π²Π΅Π½ΠΈ ΡΠ»ΠΈΠΊΠΈ. Π‘Γ¨ ΡΡΠΎ Π½Π°Π²ΠΈΡΡΠΈΠ½Π° ΡΠ°ΠΊΠ°Π² Π±Π΅ΡΠ΅ ΡΠ°ΠΌΠΎ Π΄Π° Π½Π°ΠΏΡΠ°Π²Π°ΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ Π΅ΡΠΈΠΊΠ°ΡΠ½ΠΎ ΠΈ Π±ΡΠ·ΠΎ. ΠΠΎ, Π½Π΅ ΠΌΠΎΠΆΠ΅Π² Π΄Π° ΡΡΠ°ΡΠ°ΠΌ ΠΊΠ°ΠΊΠΎ Π΄Π° ΠΊΠΎΡΠΈΡΡΠ°ΠΌ Π΄ΠΎΠΊΠ΅Ρ.
ΠΠΈ Π³ΠΎ ΠΏΡΠ΅ΡΡΡΠ°Π²ΡΠ²Π°ΠΌΠ΅ Ansible
ΠΠ΅ΠΎΠ΄Π°ΠΌΠ½Π° (ΠΏΡΠ΅Π΄ ΡΡΠΈ ΠΌΠ΅ΡΠ΅ΡΠΈ) ΡΠ°Π±ΠΎΡΠ΅Π² ΡΠΎ ΡΠΈΠΌ Π½Π° DevOps, ΡΠΈΡ ΡΠ΅ΡΠΈΡΠΈ ΡΠ΅ΠΊΠΎΡ ΡΠ»Π΅Π½ ΠΈΠΌΠ°ΡΠ΅ Π½Π΅Π³Π°ΡΠΈΠ²Π΅Π½ ΡΡΠ°Π² ΠΊΠΎΠ½ Docker. ΠΠ΄ ΠΏΡΠΈΡΠΈΠ½ΠΈ:
- docker ΠΏΡΠ°Π²ΠΈΠ»Π° iptables (ΠΈΠ°ΠΊΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠΈΡΠ΅ Π²ΠΎ daemon.json)
- docker Π΅ ΠΊΠ°Π±ΡΠΈΠΎΠ»Π΅Ρ ΠΈ Π½Π΅ΠΌΠ° Π΄Π° Π³ΠΎ ΠΏΡΡΡΠΈΠΌΠ΅ Π²ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ
- Π°ΠΊΠΎ Π΄ΠΎΠΊΠ΅Ρ Π΄Π΅ΠΌΠΎΠ½ΠΎΡ ΠΏΠ°Π΄Π½Π΅, ΡΠΎΠ³Π°Ρ ΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ ΡΠΎ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° ΠΏΠ°ΡΠ°Π°Ρ ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΎ
- Π½Π΅ΠΌΠ° ΠΏΠΎΡΡΠ΅Π±Π° ΠΎΠ΄ Π΄ΠΎΠΊΠ΅Ρ
- Π·ΠΎΡΡΠΎ Π΄ΠΎΠΊΠ΅Ρ Π°ΠΊΠΎ ΠΈΠΌΠ° Ansible ΠΈ Π²ΠΈΡΡΡΠ΅Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ
ΠΠ° ΠΈΡΡΠ°ΡΠ° ΡΠ°Π±ΠΎΡΠ° ΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°Π² ΡΠΎ ΡΡΡΠ΅ Π΅Π΄Π½Π° Π°Π»Π°ΡΠΊΠ° - Ansible. Π‘Π»ΡΡΠ½Π°Π² Π·Π° ΡΠΎΠ° Π΅Π΄Π½Π°Ρ, Π½ΠΎ Π½Π΅ ΡΠ΅ ΠΎΠ±ΠΈΠ΄ΠΎΠ² Π΄Π° Π½Π°ΠΏΠΈΡΠ°ΠΌ ΡΠ²ΠΎΠΈ ΠΊΠ½ΠΈΠ³ΠΈ. Π ΡΠ΅Π³Π° ΠΏΠΎΡΠ½Π°Π² Π΄Π° Π³ΠΈ ΠΏΠΈΡΡΠ²Π°ΠΌ ΠΌΠΎΠΈΡΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΈ ΡΠΎΠ³Π°Ρ ΠΌΠΎΡΠ°ΡΠ° Π²ΠΈΠ·ΠΈΡΠ° ΡΠ΅Π»ΠΎΡΠ½ΠΎ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ! ΠΠ°ΡΠΎΠ° ΡΡΠΎ ΡΡΠ°ΡΠΈΠ²: Ansible ΠΈΠΌΠ° ΠΌΠΎΠ΄ΡΠ»ΠΈ Π·Π° Π²ΠΎΠ΄Π΅ΡΠ΅ Π½Π° ΠΈΡΡΠΈ Π΄ΠΎΠΊΠ΅Ρ-ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ, Π³ΡΠ°Π΄Π±ΠΈ Π½Π° ΡΠ»ΠΈΠΊΠΈ, ΠΌΡΠ΅ΠΆΠΈ ΠΈΡΠ½., Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°Π°Ρ Π½Π΅ ΡΠ°ΠΌΠΎ Π»ΠΎΠΊΠ°Π»Π½ΠΎ, ΡΡΠΊΡ ΠΈ Π½Π° ΠΎΠ΄Π΄Π°Π»Π΅ΡΠ΅Π½ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΈ! ΠΠΎΠ΅ΡΠΎ Π·Π°Π΄ΠΎΠ²ΠΎΠ»ΡΡΠ²ΠΎ Π½Π΅ΠΌΠ°ΡΠ΅ Π³ΡΠ°Π½ΠΈΡΠΈ - Π½Π°ΡΠ΄ΠΎΠ² ΠΠΠ ΠΠΠΠΠ Π°Π»Π°ΡΠΊΠ° ΠΈ Π³ΠΈ ΡΡΠ»ΠΈΠ² ΠΌΠΎΠΈΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ Makefile ΠΈ docker-compose, ΡΠΈΠ΅ Π±Π΅Π° Π·Π°ΠΌΠ΅Π½Π΅ΡΠΈ ΡΠΎ yaml Π·Π°Π΄Π°ΡΠΈ. ΠΠΎΠ΄ΠΎΡ Π±Π΅ΡΠ΅ Π½Π°ΠΌΠ°Π»Π΅Π½ ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΊΠ°ΠΊΠΎ loop
, when
, ΠΡΠ½
ΠΠΎΠΊΠ΅Ρ Π·Π° Π²ΠΎΠ΄Π΅ΡΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ ΠΎΠ΄ ΡΡΠ΅ΡΠΈ ΡΡΡΠ°Π½ΠΈ ΠΊΠ°ΠΊΠΎ Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ
ΠΠ΅ΠΎΠ΄Π°ΠΌΠ½Π° ΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°Π² ΡΠΎ ssh ΡΡΠ½Π΅Π»ΠΈΡΠ΅. Π‘Π΅ ΠΈΡΠΏΠΎΡΡΠ°Π²ΠΈ Π΄Π΅ΠΊΠ° Π΅ ΠΌΠ½ΠΎΠ³Ρ Π»Π΅ΡΠ½ΠΎ Π΄Π° ΡΠ΅ βΠΏΡΠ΅ΠΏΡΠ°ΡΠΈβ ΠΏΡΠΈΡΡΠ°Π½ΠΈΡΡΠ΅ΡΠΎ Π½Π° ΠΎΠ΄Π΄Π°Π»Π΅ΡΠ΅Π½ ΡΠ΅ΡΠ²Π΅Ρ Π΄ΠΎ Π»ΠΎΠΊΠ°Π»Π½ΠΎ ΠΏΡΠΈΡΡΠ°Π½ΠΈΡΡΠ΅. ΠΠ°Π»Π΅ΡΠΈΠ½ΡΠΊΠΈΠΎΡ ΡΠ΅ΡΠ²Π΅Ρ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ ΠΈΠ»ΠΈ ΠΌΠ°ΡΠΈΠ½Π° Π²ΠΎ ΠΎΠ±Π»Π°ΠΊΠΎΡ ΠΈΠ»ΠΈ Π²ΠΈΡΡΡΠ΅Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π° ΡΡΠΎ ΡΠ°Π±ΠΎΡΠΈ Π²ΠΎ VirtualBox. ΠΠΊΠΎ Π½Π° ΠΌΠΎΡΠΎΡ ΠΊΠΎΠ»Π΅Π³Π° ΠΈΠ»ΠΈ Π½Π° ΠΌΠ΅Π½Π΅ Π½ΠΈ ΡΡΠ΅Π±Π° Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ (ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡΠ° Π΄ΡΡΠ³Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΎΠ΄ ΡΡΠ΅ΡΠ° ΡΡΡΠ°Π½Π°), ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ Π΄Π° Π³ΠΎ ΡΡΠ°ΡΡΡΠ²Π°ΠΌΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΡΠΎ ΠΎΠ²Π°Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΈ Π΄Π° Π³ΠΎ ΠΈΡΠΊΠ»ΡΡΠΈΠΌΠ΅ ΠΊΠΎΠ³Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ Π½Π΅ Π΅ ΠΏΠΎΡΡΠ΅Π±Π΅Π½. ΠΡΠ΅ΠΏΡΠ°ΡΠ°ΡΠ΅ΡΠΎ Π½Π° ΠΏΠΎΡΡΠ°ΡΠ° Π³ΠΎ Π΄Π°Π²Π° ΠΈΡΡΠΈΠΎΡ Π΅ΡΠ΅ΠΊΡ ΠΊΠ°ΠΊΠΎ Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠΈ Π²ΠΎ Π΄ΠΎΠΊΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ.
ΠΠ²Π°Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ° ΠΏΡΠ΅ΠΏΡΠ°ΡΠ° ΠΌΠΎΡΠ°ΡΠ° Π»ΠΎΠΊΠ°Π»Π½Π° ΠΏΠΎΡΡΠ° Π½Π° ΠΎΠ΄Π΄Π°Π»Π΅ΡΠ΅Π½ ΡΠ΅ΡΠ²Π΅Ρ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠΈ postgresql:
ssh -L 9000:localhost:5432 [Π·Π°ΡΡΠΈΡΠ΅Π½Π° ΠΏΠΎ Π΅-ΠΏΠΎΡΡΠ°]
ΠΠΎΡΠΈΡΡΠ΅ΡΠ΅ΡΠΎ Π½Π° Π΄Π°Π»Π΅ΡΠΈΠ½ΡΠΊΠΈ ΡΠ΅ΡΠ²Π΅Ρ Π³ΠΎ ΡΠ΅ΡΠ°Π²Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΡ ΡΠΎ ΡΠ°Π·Π²ΠΎΡΠΎΡ Π½Π° ΡΠΈΠΌΠΎΡ. Π’Π°ΠΊΠ²ΠΈΠΎΡ ΡΠ΅ΡΠ²Π΅Ρ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠ°Ρ Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈ ΠΎΠ΄Π΅Π΄Π½Π°Ρ; ΡΠΈΠ΅ Π½Π΅ ΡΡΠ΅Π±Π° Π΄Π° ΠΌΠΎΠΆΠ°Ρ Π΄Π° Π³ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π°Ρ postgresql, Π΄Π° Π³ΠΎ ΡΠ°Π·Π±ΠΈΡΠ°Π°Ρ Docker ΠΈ Π΄ΡΡΠ³ΠΈΡΠ΅ ΡΠ»ΠΎΠΆΠ΅Π½ΠΎΡΡΠΈ. ΠΠ° ΠΎΠ΄Π΄Π°Π»Π΅ΡΠ΅Π½ ΡΠ΅ΡΠ²Π΅Ρ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΈΡΡΠ°ΡΠ° Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π²ΠΎ ΡΠ°ΠΌΠΈΠΎΡ Docker, Π°ΠΊΠΎ Π΅ ΡΠ΅ΡΠΊΠΎ Π΄Π° ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ° ΠΎΠ΄ΡΠ΅Π΄Π΅Π½Π° Π²Π΅ΡΠ·ΠΈΡΠ°. Π‘Γ¨ ΡΡΠΎ ΠΈΠΌ Π΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈΡΠ΅ Π΅ Π΄Π° ΠΎΠ±Π΅Π·Π±Π΅Π΄Π°Ρ ssh ΠΏΡΠΈΡΡΠ°ΠΏ!
ΠΠ΅ΠΎΠ΄Π°ΠΌΠ½Π° ΠΏΡΠΎΡΠΈΡΠ°Π² Π΄Π΅ΠΊΠ° SSH ΡΡΠ½Π΅Π»ΠΈΡΠ΅ ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ Π½Π° ΠΎΠ±ΠΈΡΠ΅Π½ VPN! ΠΠΎΠΆΠ΅ΡΠ΅ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ OpenVPN ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π½Π° VPN, Π΄Π° ΡΠ° ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° ΠΈ Π΄Π° ΠΈΠΌ ΡΠ° Π΄Π°Π΄Π΅ΡΠ΅ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈΡΠ΅ Π·Π° ΡΠΏΠΎΡΡΠ΅Π±Π°. ΠΠ²Π° Π΅ ΡΠΎΠ»ΠΊΡ ΠΊΡΠ»!
ΠΠ° ΡΡΠ΅ΡΠ°, AWS, GoogleCloud ΠΈ Π΄ΡΡΠ³ΠΈ Π²ΠΈ Π΄Π°Π²Π°Π°Ρ Π΅Π΄Π½Π° Π³ΠΎΠ΄ΠΈΠ½Π° Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅, Π·Π°ΡΠΎΠ° ΠΈΡΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π³ΠΈ! Π’ΠΈΠ΅ ΡΠ΅ Π΅Π²ΡΠΈΠ½ΠΈ Π°ΠΊΠΎ Π³ΠΈ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅ ΠΊΠΎΠ³Π° Π½Π΅ ΡΠ΅ Π²ΠΎ ΡΠΏΠΎΡΡΠ΅Π±Π°. Π‘Π΅ΠΊΠΎΠ³Π°Ρ ΡΠ΅ ΠΏΡΠ°ΡΡΠ²Π°Π² Π·ΠΎΡΡΠΎ ΡΠ΅ ΠΌΠΈ ΡΡΠ΅Π±Π° Π΄Π°Π»Π΅ΡΠΈΠ½ΡΠΊΠΈ ΡΠ΅ΡΠ²Π΅Ρ ΠΊΠ°ΠΊΠΎ gcloud, ΠΈΠ·Π³Π»Π΅Π΄Π° Π³ΠΈ Π½Π°ΡΠ΄ΠΎΠ².
ΠΠ°ΠΊΠΎ Π»ΠΎΠΊΠ°Π»Π½Π° Π²ΠΈΡΡΡΠ΅Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΈΡΡΠΈΠΎΡ Alpine, ΠΊΠΎΡ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π²ΠΎ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ Π·Π° Π΄ΠΎΠΊΠ΅Ρ. ΠΠ°, ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΠΈ Π΄ΡΡΠ³ΠΈ Π»Π΅ΡΠ½ΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈ Π·Π° Π΄Π° ΡΠ΅ ΠΏΠΎΠ΄ΠΈΠ³Π½Π΅ ΠΌΠ°ΡΠΈΠ½Π°ΡΠ° ΠΏΠΎΠ±ΡΠ·ΠΎ.
ΠΡΠ°ΡΠ½Π° Π»ΠΈΠ½ΠΈΡΠ°: ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈ ΡΡΠ΅Π±Π° Π΄Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΈ Π΄ΡΡΠ³ΠΈ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ½ΠΈ Π΄ΠΎΠ±ΡΠΈΠ½ΠΈ Π½Π° ΠΎΠ΄Π΄Π°Π»Π΅ΡΠ΅Π½ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΈ ΠΈΠ»ΠΈ Π²ΠΎ Π²ΠΈΡΡΡΠ΅Π»Π½Π° ΠΊΡΡΠΈΡΠ°. ΠΠ΅ ΠΌΠΈ ΡΡΠ΅Π±Π° Π΄ΠΎΠΊΠ΅Ρ Π·Π° ΠΎΠ²ΠΈΠ΅ ΡΠ΅Π»ΠΈ.
ΠΠ°Π»ΠΊΡ Π·Π° Π΄ΠΎΠΊΠ΅ΡΡΠΊΠΈΡΠ΅ ΡΠ»ΠΈΠΊΠΈ ΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΠ°ΡΠ°
ΠΠ΅ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°Π²
ΠΠ°Π»ΠΈ ΡΡΠ΅ Π²ΠΈΠ΄Π΅Π»Π΅ Π½Π΅ΠΊΠ°Π΄Π΅ ΠΊΠ°Π΄Π΅ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠΈΡΠ΅ Π½Π° ΡΠΎΡΡΠ²Π΅Ρ Π³ΠΈ ΠΏΡΠ΅Π½Π΅ΡΡΠ²Π°Π°Ρ ΡΠ²ΠΎΠΈΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈ ΡΠ°ΠΌΠΎ Π²ΠΎ Π΄ΠΎΠΊΠ΅ΡΡΠΊΠ° ΡΠ»ΠΈΠΊΠ°?
Π Π΅Π·ΡΠ»ΡΠ°ΡΠΎΡ ΠΎΠ΄ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈ ΡΠ΅ Π±ΠΈΠ½Π°ΡΠ½ΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ Π·Π° ΠΎΠ΄ΡΠ΅Π΄Π΅Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°; ΡΠΈΠ΅ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ ΡΠ΅ Π΄ΠΎΠ΄Π°Π²Π°Π°Ρ Π½Π° ΡΠ»ΠΈΠΊΠ°ΡΠ° Π½Π° Π΄ΠΎΠΊΠ΅ΡΠΎΡ, ΠΊΠΎΡΠ° Π΅ Π½Π°ΡΠ»Π΅Π΄Π΅Π½Π° ΠΎΠ΄ ΡΠ°ΠΊΠ°Π½Π°ΡΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°. ΠΠ°Π»ΠΈ Π½Π΅ΠΊΠΎΠ³Π°Ρ ΡΡΠ΅ ΡΠ΅ Π·Π°ΠΏΡΠ°ΡΠ°Π»Π΅ Π·ΠΎΡΡΠΎ ΠΈΠΌΠ° ΡΠΎΠ»ΠΊΡ ΠΌΠ½ΠΎΠ³Ρ ΡΠ»ΠΈΡΠ½ΠΈ ΡΠ»ΠΈΠΊΠΈ Π½Π° dockerhub? ΠΠ½Π΅ΡΠ΅ΡΠ΅ nginx Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ 100500 ΡΠ»ΠΈΠΊΠΈ ΠΎΠ΄ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π»ΡΡΠ΅. ΠΠ²ΠΈΠ΅ Π»ΡΡΠ΅ Π½Π΅ Π³ΠΎ ΡΠ°Π·Π²ΠΈΡΠ° ΡΠ°ΠΌΠΈΠΎΡ nginx, ΡΠΈΠ΅ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ Π΄ΠΎΠ΄Π°Π΄ΠΎΠ° ΠΎΡΠΈΡΠΈΡΠ°Π»Π΅Π½ nginx Π½Π° Π½ΠΈΠ²Π½ΠΈΠΎΡ Π΄ΠΎΠΊΠ΅Ρ ΠΈΠΌΠΈΡ ΠΈ Π³ΠΎ Π·Π°ΡΠΈΠ½ΠΈΡΠ° ΡΠΎ ΡΠ²ΠΎΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π·Π° ΠΏΡΠ°ΠΊΡΠΈΡΠ½ΠΎΡΡΠ° Π½Π° Π»Π°Π½ΡΠΈΡΠ°ΡΠ΅ΡΠΎ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ.
ΠΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ Π΄Π° Π³ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ Π²ΠΎ tgz, Π°ΠΊΠΎ Π½Π΅ΠΊΠΎΡ ΡΡΠ΅Π±Π° Π΄Π° Π³ΠΎ ΠΈΠ·Π²ΡΡΠΈ Π²ΠΎ docker, ΡΠΎΠ³Π°Ρ Π½Π΅ΠΊΠ° Π³ΠΎ Π΄ΠΎΠ΄Π°Π΄Π΅ tgz Π²ΠΎ Dockerfile, Π΄Π° Π½Π°ΡΠ»Π΅Π΄ΠΈ ΠΎΠ΄ ΡΠ°ΠΊΠ°Π½Π°ΡΠ° ΠΎΠΊΠΎΠ»ΠΈΠ½Π° ΠΈ Π΄Π° ΡΠΎΠ·Π΄Π°Π΄Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Π±ΡΡ
ΡΠΈ ΠΊΠΎΠΈ Π½Π΅ ΡΠ° ΠΌΠ΅Π½ΡΠ²Π°Π°Ρ ΡΠ°ΠΌΠ°ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π²ΠΎ tgz. Π‘Π΅ΠΊΠΎΡ ΡΡΠΎ ΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄Π΅ Π΄ΠΎΠΊΠ΅Ρ ΡΠ»ΠΈΠΊΠ° ΡΠ΅ Π·Π½Π°Π΅ ΡΡΠΎ Π΅ tgz ΠΈ ΡΡΠΎ ΠΌΡ ΡΡΠ΅Π±Π° Π·Π° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ. ΠΠ°ΠΊΠ° ΠΊΠΎΡΠΈΡΡΠ°ΠΌ Π΄ΠΎΠΊΠ΅Ρ
ΠΡΠ°ΡΠ½Π° Π»ΠΈΠ½ΠΈΡΠ°: Π½Π΅ ΠΌΠΈ ΡΡΠ΅Π±Π° Π΄ΠΎΠΊΠ΅Ρ ΡΠ΅Π³ΠΈΡΡΠ°Ρ, ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°ΠΌ Π½Π΅ΠΊΠΎΡ Π²ΠΈΠ΄ S3 ΠΈΠ»ΠΈ ΡΠ°ΠΌΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ ΠΊΠ°ΠΊΠΎ Google Drive/dropbox
ΠΠΎΠΊΠ΅Ρ Π²ΠΎ CI
Π‘ΠΈΡΠ΅ ΡΠΈΡΠΌΠΈ Π·Π° ΠΊΠΎΠΈ ΡΡΠΌ ΡΠ°Π±ΠΎΡΠ΅Π» ΡΠ΅ ΡΠ»ΠΈΡΠ½ΠΈ. Π’ΠΈΠ΅ ΡΠ΅ ΠΎΠ±ΠΈΡΠ½ΠΎ Π½Π°ΠΌΠΈΡΠ½ΠΈΡΠΈ. Π’ΠΎΠ° Π΅, ΡΠΈΠ΅ ΠΈΠΌΠ°Π°Ρ Π΅Π΄Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°, Π΅Π΄Π΅Π½ ΡΡΠ΅ΠΊ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ° (Π΄ΠΎΠ±ΡΠΎ, ΠΌΠΎΠΆΠ΅Π±ΠΈ Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΠΈΠ»ΠΈ ΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΡΠΊΠΈ ΡΠ°Π·ΠΈΡΠΈ).
ΠΠ²ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΊΠΎΡΠΈΡΡΠ°Ρ Π΄ΠΎΠΊΠ΅Ρ Π½Π° Π½ΠΈΠ²Π½ΠΈΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠΈ ΠΊΠ°Π΄Π΅ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠΈ ΠΏΡΠΎΡΠ΅ΡΠΎΡ CI. ΠΡΠ°ΡΠ°ΡΠ΅: ΠΠΎΡΡΠΎ ΡΡΠ΅Π±Π° Π΄Π° Π³ΡΠ°Π΄ΠΈΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈ Π²ΠΎ Π΄ΠΎΠΊΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ Π½Π° Π²Π°ΡΠΈΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠΈ? ΠΠΎΡΡΠΎ ΡΠ°ΠΌΠΎ Π΄Π° Π½Π΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²ΠΈΡΠ΅ ΡΡΠ΅Π΄ΠΈΠ½Π° Π·Π° ΠΈΠ·Π³ΡΠ°Π΄Π±Π°ΡΠ°, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ Ansible Playbook ΠΊΠΎΡΠ° ΡΠ΅ Π³ΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ° ΠΏΠΎΡΡΠ΅Π±Π½ΠΈΡΠ΅ Π²Π΅ΡΠ·ΠΈΠΈ Π½Π° nodejs, php, jdk, ΠΊΠΎΠΏΠΈΡΠ°ΡΡΠ΅ ssh ΠΊΠ»ΡΡΠ΅Π²ΠΈ ΠΈΡΠ½. Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ Π²ΠΎ ΠΊΠΎΡ ΡΠ΅ ΡΠ΅ ΠΎΠ΄Π²ΠΈΠ²Π° ΠΈΠ·Π³ΡΠ°Π΄Π±Π°ΡΠ°?
Π‘Π΅Π³Π° ΡΠ°Π·Π±ΡΠ°Π² Π΄Π΅ΠΊΠ° ΠΎΠ²Π° ΡΠΈ ΠΏΡΠΊΠ° Π²ΠΎ Π½ΠΎΠ³Π°, Π±ΠΈΠ΄Π΅ΡΡΠΈ Π΄ΠΎΠΊΠ΅Ρ Π½Π΅ Π½ΠΎΡΠΈ Π½ΠΈΠΊΠ°ΠΊΠΎΠ² ΠΏΡΠΎΡΠΈΡ ΡΠΎ ΡΠ²ΠΎΡΠ°ΡΠ° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡΠ°. ΠΡΠΎΠ±Π»Π΅ΠΌΠΈ ΡΡΠΎ Π³ΠΈ ΡΡΠ΅ΡΠ½Π°Π² ΡΠΎ CI Π²ΠΎ Π΄ΠΎΠΊΠ΅ΡΠΎΡ:
- ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π²ΠΈ ΡΡΠ΅Π±Π° Π΄ΠΎΠΊΠ΅Ρ ΡΠ»ΠΈΠΊΠ° Π·Π° Π΄Π° ΠΈΠ·Π³ΡΠ°Π΄ΠΈΡΠ΅. ΡΡΠ΅Π±Π° Π΄Π° Π±Π°ΡΠ°ΡΠ΅ ΡΠ»ΠΈΠΊΠ° ΠΈΠ»ΠΈ Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΡΠ²ΠΎΡΠ° ΡΠΎΠΏΡΡΠ²Π΅Π½Π° dockerfile.
- 90% Π΄Π΅ΠΊΠ° ΡΡΠ΅Π±Π° Π΄Π° ΠΏΡΠ΅ΠΏΡΠ°ΡΠΈΡΠ΅ Π½Π΅ΠΊΠΎΠΈ ssh ΠΊΠ»ΡΡΠ΅Π²ΠΈ, ΡΠ°ΡΠ½ΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊΠ°ΡΠ΅ Π΄Π° Π³ΠΈ Π·Π°ΠΏΠΈΡΠ΅ΡΠ΅ Π½Π° ΡΠ»ΠΈΠΊΠ°ΡΠ° Π½Π° Π΄ΠΎΠΊΠ΅ΡΠΎΡ.
- ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΡ ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π° ΠΈ ΡΠΌΠΈΡΠ°, ΡΠΈΡΠ΅ ΠΊΠ΅ΡΠΎΠ²ΠΈ ΡΠ΅ Π³ΡΠ±Π°Ρ Π·Π°Π΅Π΄Π½ΠΎ ΡΠΎ Π½Π΅Π³ΠΎ. ΡΠ»Π΅Π΄Π½Π°ΡΠ° ΠΈΠ·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΡΠ΅ Π³ΠΈ ΠΏΡΠ΅Π·Π΅ΠΌΠ΅ ΡΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ ΠΎΠ΄ ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ, ΡΡΠΎ ΠΎΠ΄Π·Π΅ΠΌΠ° ΠΌΠ½ΠΎΠ³Ρ Π²ΡΠ΅ΠΌΠ΅ ΠΈ Π΅ Π½Π΅Π΅ΡΠΈΠΊΠ°ΡΠ½ΠΎ, Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π΅ ΠΏΠ°ΡΠΈ.
ΠΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈΡΠ΅ Π½Π΅ Π³ΡΠ°Π΄Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈ Π²ΠΎ Π΄ΠΎΠΊΠ΅Ρ-ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ (Π½Π΅ΠΊΠΎΠ³Π°Ρ Π±Π΅Π² ΡΠ°ΠΊΠΎΠ² ΠΎΠ±ΠΎΠΆΠ°Π²Π°ΡΠ΅Π», Π½Π°Π²ΠΈΡΡΠΈΠ½Π°, ΡΠ΅ ΠΆΠ°Π»Π°ΠΌ Π·Π° ΡΠ΅Π±Π΅ Π²ΠΎ ΠΌΠΈΠ½Π°ΡΠΎΡΠΎ xD). ΠΠΎ java Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΠΈΠΌΠ°ΡΠ΅ Π½Π΅ΠΊΠΎΠ»ΠΊΡ Π²Π΅ΡΠ·ΠΈΠΈ ΠΈ Π΄Π° Π³ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠΎ Π΅Π΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π° ΠΎΠ½Π°Π° ΡΡΠΎ Π²ΠΈ ΡΡΠ΅Π±Π° ΡΠ΅Π³Π°. ΠΠΎ nodejs Π΅ ΠΈΡΡΠΎ, ΠΈΠΌΠ° nvm.
ΠΠ·Π»Π΅Π·
ΠΠ΅ΡΡΠ²Π°ΠΌ Π΄Π΅ΠΊΠ° Π΄ΠΎΠΊΠ΅ΡΠΎΡ Π΅ ΠΌΠ½ΠΎΠ³Ρ ΠΌΠΎΡΠ½Π° ΠΈ ΡΠ»Π΅ΠΊΡΠΈΠ±ΠΈΠ»Π½Π° Π°Π»Π°ΡΠΊΠ°, ΠΎΠ²Π° Π΅ Π½Π΅Π³ΠΎΠ²ΠΈΠΎΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ (Π·Π²ΡΡΠΈ ΡΡΠ΄Π½ΠΎ, Π΄Π°). Π‘ΠΎ Π½Π΅Π³ΠΎΠ²Π° ΠΏΠΎΠΌΠΎΡ, ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈΡΠ΅ ΠΌΠΎΠΆΠ°Ρ Π»Π΅ΡΠ½ΠΎ Π΄Π° ΡΠ΅ Π·Π°ΠΊΠ°ΡΠ°Ρ Π½Π° Π½Π΅Π³ΠΎ ΠΈ Π΄Π° Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠ°Ρ ΠΎΠ½Π°ΠΌΡ ΠΊΠ°Π΄Π΅ ΡΡΠΎ Π΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ, Π° Π½Π΅. ΠΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈΡΠ΅ Π³ΠΈ Π»Π°Π½ΡΠΈΡΠ°Π°Ρ ΡΠ²ΠΎΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ, Π½Π΅ΠΊΠΎΠΈ ΠΎΠ΄ Π½ΠΈΠ²Π½ΠΈΡΠ΅ ΠΎΠΊΠΎΠ»ΠΈΠ½ΠΈ, Π° ΠΏΠΎΡΠΎΠ° ΡΠ΅ΡΠΎ ΡΠΎΠ° Π½Π΅ΠΏΡΠ΅ΡΠ΅Π½ΠΎ ΡΠ΅ Π²Π»Π΅Π²Π° Π²ΠΎ CI ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ. Π’ΠΈΠΌΠΎΡ Π½Π° DevOps ΠΏΠΈΡΡΠ²Π° Π½Π΅ΠΊΠΎΡ Π²ΠΈΠ΄ Π½Π° ΠΊΠΎΠ΄ Π·Π° Π΄Π° Π³ΠΈ ΡΡΠ°ΡΡΡΠ²Π° ΠΎΠ²ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ.
ΠΠΎΡΠΈΡΡΠ΅ΡΠ΅ ΡΠ°ΠΌΠΎ Π΄ΠΎΠΊΠ΅Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ Π½Π°ΡΠ½ΠΎΠ²ΠΈΠΎΡ ΡΠ°Π·Π° Π²ΠΎ Π²Π°ΡΠΈΠΎΡ ΡΠ°Π±ΠΎΡΠ΅Π½ ΡΠ΅ΠΊ, Π½Π΅ Π³ΠΎ Π²Π»Π΅ΡΠ΅ΡΠ΅ Π²ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ Π½Π° ΠΏΠΎΡΠ΅ΡΠΎΠΊΠΎΡ. Π’ΠΎΠ° Π½Π΅ΠΌΠ° Π΄Π° Π²ΠΈ Π³ΠΈ ΡΠ΅ΡΠΈ Π΄Π΅Π»ΠΎΠ²Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ. Π’ΠΎΡ ΡΠ°ΠΌΠΎ ΡΠ΅ Π³ΠΈ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ Π½Π° ΠΠ Π£ΠΠ Π½ΠΈΠ²ΠΎ ΠΈ ΡΠ΅ ΠΏΠΎΠ½ΡΠ΄ΠΈ ΡΠ²ΠΎΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡΠ°, Π²ΠΈΠ΅ ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈΡΠ΅ Π΄Π²ΠΎΡΠ½Π° ΡΠ°Π±ΠΎΡΠ°.
ΠΠΎΠ³Π° Π΅ ΠΏΠΎΡΡΠ΅Π±Π΅Π½ Π΄ΠΎΠΊΠ΅Ρ: ΠΠΎΡΠ΄ΠΎΠ² Π΄ΠΎ Π·Π°ΠΊΠ»ΡΡΠΎΠΊ Π΄Π΅ΠΊΠ° docker Π΅ ΠΌΠ½ΠΎΠ³Ρ Π΄ΠΎΠ±Π°Ρ Π²ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°ΡΠ΅ Π½Π° Π΄Π°Π΄Π΅Π½ ΠΏΡΠΎΡΠ΅Ρ, Π½ΠΎ Π½Π΅ ΠΈ Π²ΠΎ Π³ΡΠ°Π΄Π΅ΡΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ
ΠΠΊΠΎ ΡΠ΅ΠΏΠ°ΠΊ ΠΎΠ΄Π»ΡΡΠΈΡΠ΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ Π΄ΠΎΠΊΠ΅Ρ, ΡΠΎΠ³Π°Ρ:
- Π±ΠΈΠ΄Π΅ΡΠ΅ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»Π½ΠΈ
- Π½Π΅ Π³ΠΈ ΠΏΡΠΈΠ½ΡΠ΄ΡΠ²Π°ΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈΡΠ΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠ°Ρ Π΄ΠΎΠΊΠ΅Ρ
- Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΈΡΠ°ΡΡΠ΅ ΡΠ° Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΡΠΏΠΎΡΡΠ΅Π±Π° Π½Π° Π΅Π΄Π½ΠΎ ΠΌΠ΅ΡΡΠΎ, Π½Π΅ ΡΠΈΡΠ΅ΡΠ΅ ΡΠ° Π½ΠΈΠ· ΡΠΈΡΠ΅ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ° Π½Π° Dockfile ΠΈ docker-compose
PS:
- ΠΠ΅ΠΎΠ΄Π°ΠΌΠ½Π° Π½Π°ΠΈΠ΄ΠΎΠ²
ΠΏΠ°ΠΊΡΠ²Π°Ρ ΠΈ ΡΠΈΠ΅ Π²Π΅Π»Π°Ρ Π΄Π΅ΠΊΠ° ΡΠ°Π±ΠΎΡΠΈ ΠΌΠ½ΠΎΠ³Ρ Π΄ΠΎΠ±ΡΠΎ ΡΠΎ Ansible ΠΈ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° Π³ΠΎ ΠΎΠ±Π΅Π΄ΠΈΠ½ΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΎΡ Π½Π° Π³ΡΠ°Π΄Π΅ΡΠ΅ ΡΠ»ΠΈΠΊΠΈ (Π²ΠΊΠ»ΡΡΡΠ²Π°ΡΡΠΈ ΡΠ° ΠΈ Π΄ΠΎΠΊΠ΅ΡΡΠΊΠ°ΡΠ° ΡΠ»ΠΈΠΊΠ°) ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° Π·Π° Π΄ΠΎΠΊΠ΅Ρ, ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π° ΡΡΠ°ΡΠΈΡΠ°
ΠΠΈ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ°ΠΌ ΡΡΠΎ ΠΏΡΠΎΡΠΈΡΠ°Π²ΡΠ΅, Π²ΠΈ ΠΏΠΎΡΠ°ΠΊΡΠ²Π°ΠΌ ΡΡΠ°Π½ΡΠΏΠ°ΡΠ΅Π½ΡΠ½ΠΈ ΠΎΠ΄Π»ΡΠΊΠΈ Π²ΠΎ Π²Π°ΡΠΈΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ ΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΠΈ ΡΠ°Π±ΠΎΡΠ½ΠΈ Π΄Π΅Π½ΠΎΠ²ΠΈ!
ΠΠ·Π²ΠΎΡ: www.habr.com