ΠΡΠ΅ΠΌ ΠΏΡΠΈΠ²Π΅Ρ!
ΠΠΎΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠ΅ΡΡΡ ΠΏΡΡΠΌ ΡΡΠ°Π·Ρ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ ΡΠ΅ΠΌΠ΅, Π½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½Π΅Π΅ Π±ΡΠ΄Π΅Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΏΡΠΎ ΠΌΠΎΡ ΠΈΡΡΠΎΡΠΈΡ:
ΠΡΡΡΠΏΠ»Π΅Π½ΠΈΠ΅
Π― ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ Ρ ΠΎΠΏΡΡΠΎΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ frontend ΠΎΠ΄Π½ΠΎΡΡΡΠ°Π½ΠΈΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, scala/java ΠΈ nodejs Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅.
ΠΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π΄ΠΎΠ»Π³ΠΎ (ΡΠΆΠ΅ ΡΠΎΡΠ½ΠΎ ΠΏΠ°ΡΡ β ΡΡΠΎΠΉΠΊΡ Π»Π΅Ρ), Ρ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°Π»ΡΡ ΠΌΠ½Π΅Π½ΠΈΡ, ΡΡΠΎ docker ΡΡΠΎ ΠΌΠ°Π½Π½Π° Π½Π΅Π±Π΅ΡΠ½Π°Ρ ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΎΡΠ΅Π½Ρ ΠΊΡΡΡΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΈ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΌΠ΅ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΈΠΌ. Π ΠΎΡΡΡΠ΄Π° Π²ΡΡΠ΅ΠΊΠ°Π΅Ρ, ΡΡΠΎ ΠΈ Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡΠΎΡΡΡ docker Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅. ΠΠ° ΡΡΠΎ ΡΠ°ΠΌ ΠΏΡΠΎ ΠΌΠΎΡ ΠΌΠ½Π΅Π½ΠΈΠ΅, Π²Ρ ΠΏΠΎΠ»ΠΈΡΡΠ°ΠΉΡΠ΅ Π²Π°ΠΊΠ°Π½ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡΡΡ Π½Π° ΡΠΎΠΌ ΠΆΠ΅ hh. Π ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²ΡΠΎΡΠΎΠΉ Π΅ΡΡΡ ΡΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΏΡΠΎ docker ΠΈ Π΅ΡΠ»ΠΈ Π²Ρ ΠΈΠΌ Π²Π»Π°Π΄Π΅Π΅ΡΠ΅ β ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π²Π°ΡΠΈΠΌ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΡΠΌ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎΠΌ π
ΠΠ° ΡΠ²ΠΎΠ΅ΠΌ ΠΏΡΡΠΈ Ρ Π²ΡΡΠ΅ΡΠ°Π»ΡΡ Ρ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ Π»ΡΠ΄ΡΠΌΠΈ, Ρ ΠΈΡ ΡΠ°Π·Π½ΡΠΌ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΊ docker ΠΈ ΠΊ Π΅Π³ΠΎ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ΅. ΠΠ΄Π½ΠΈ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ, ΡΡΠΎ ΡΡΠΎ ΡΠ΄ΠΎΠ±Π½Π°Ρ Π²Π΅ΡΡ, Π³Π°ΡΠ°Π½ΡΠΈΡΡΡΡΠ°Ρ ΠΊΡΠΎΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΠΎΡΡΡ. ΠΡΠΎΡΡΠ΅ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π»ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΈΠΌ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°Ρ ΠΈ ΠΊΠ°ΠΊΠΎΠΉ ΠΏΡΠΎΡΠΈΡ ΠΎΡ ΡΡΠΎΠ³ΠΎ, ΡΡΠ΅ΡΡΠΈΠΌ Π±ΡΠ»ΠΎ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΏΠΎΡΠΈΠ³ ΠΈ ΠΎΠ½ΠΈ Π½Π΅ ΠΏΠ°ΡΠΈΠ»ΠΈΡΡ (ΠΏΡΠΎΡΡΠΎ ΠΏΠΈΡΠ°Π»ΠΈ ΠΊΠΎΠ΄ ΠΈ ΡΡ ΠΎΠ΄ΠΈΠ»ΠΈ Π΄ΠΎΠΌΠΎΠΉ β Π·Π°Π²ΠΈΠ΄ΡΡ, ΠΊΡΡΠ°ΡΠΈ, ΠΈΠΌ π )
ΠΡΠΈΡΠΈΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
ΠΠΎΡΠ΅ΠΌΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» docker? ΠΠ°Π²Π΅ΡΠ½ΠΎΠ΅ ΠΏΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ:
- Π·Π°ΠΏΡΡΠΊ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , 99% ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΈΠΌΠΈ
- Π·Π°ΠΏΡΡΠΊ nginx Π΄Π»Ρ ΡΠ°Π·Π΄Π°ΡΠΈ frontend ΠΈ ΠΏΡΠΎΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° backend
- ΠΌΠΎΠΆΠ½ΠΎ ΡΠΏΠ°ΠΊΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² docker ΠΎΠ±ΡΠ°Π·, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π²Π΅Π·Π΄Π΅, Π³Π΄Π΅ Π΅ΡΡΡ docker, ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠ°ΡΠΈΠΈ ΡΠ΅ΡΠ΅Π½Π° ΡΠΆΠ΅ ΡΡΠ°Π·Ρ
- service discovery ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈ, ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ (ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΡΠΉ ΠΊ ΠΎΠ±ΡΠ΅ΠΉ ΡΠ΅ΡΠΈ) Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΡΡΡΡΠΈΡΡΡ Π΄ΠΎ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΏΠΎ Π°Π»ΠΈΠ°ΡΡ, ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ
- ΠΏΡΠΈΠΊΠΎΠ»ΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΈ «ΠΏΠΎΠΈΠ³ΡΠ°ΡΡΡΡ» Π² Π½Π΅ΠΌ.
Π§ΡΠΎ ΠΌΠ½Π΅ Π²ΡΠ΅Π³Π΄Π° ΠΠ Π½ΡΠ°Π²ΠΈΠ»ΠΎΡΡ Π² docker:
- Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΌΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ, Π½ΡΠΆΠ΅Π½ ΡΠ°ΠΌ docker Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅. Π Π·Π°ΡΠ΅ΠΌ ΠΌΠ½Π΅ ΡΡΠΎ, Π΅ΡΠ»ΠΈ ΠΌΠΎΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° jre ΠΈΠ»ΠΈ Π½Π° nodejs ΠΈ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Π½ΠΈΡ ΡΠΆΠ΅ Π΅ΡΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅?
- Π΅ΡΠ»ΠΈ Ρ Ρ
ΠΎΡΡ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ²ΠΎΠΉ (ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΉ) Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ ΡΠΎΠ±ΡΠ°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ°Π· Π½Π° ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅, ΡΠΎ ΠΌΠ½Π΅ Π½ΡΠΆΠ΅Π½ ΡΠ²ΠΎΠΉ docker ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ, Π½ΡΠΆΠ½ΠΎ ΡΡΠΎΠ±Ρ Π³Π΄Π΅-ΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π» registry ΠΈ Π΅ΡΠ΅ Π½ΡΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ https, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ docker cli ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ https. ΠΡ
Π±Π»ΠΈΠ½β¦ Π΅ΡΡΡ Π²Π°ΡΠΈΠ°Π½ΡΡ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ ΠΎΠ±ΡΠ°Π· Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ ΡΠ΅ΡΠ΅Π·
docker save
ΠΈ ΡΠ΅ΡΠ΅Π· scp ΠΏΡΠΎΡΡΠΎ ΡΠΊΠΈΠ½ΡΡΡ ΠΎΠ±ΡΠ°Π·β¦ ΠΠΎ ΡΡΠΎ ΡΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π»ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΉ. Π ΠΊ ΡΠΎΠΌΡ ΠΆΠ΅ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ «ΠΊΠΎΡΡΡΠ»ΡΠ½ΡΠΌ» ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΡΠ²ΠΈΡΡΡ ΡΠ²ΠΎΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ docker-compose
. ΠΠ½ Π½ΡΠΆΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ². Π Π²ΡΠ΅. ΠΠΎΠ»ΡΡΠ΅ Π½ΠΈΡΠ΅Π³ΠΎ ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ.Docker-compose
ΠΈΠΌΠ΅Π΅Ρ ΠΊΡΡΡ Π²Π΅ΡΡΠΈΠΉ ΡΠ²ΠΎΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΡΠ²ΠΎΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ. ΠΠ°ΠΊΠΈΠΌ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΡΠΌ ΠΎΠ½ Π±Ρ Π½ΠΈ Π±ΡΠ», Ρ Π½Π΅ Ρ ΠΎΡΡ ΡΠΈΡΠ°ΡΡ ΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ. ΠΠ½Π΅ ΠΎΠ½Π° Π±ΠΎΠ»ΡΡΠ΅ Π½ΠΈΠ³Π΄Π΅ Π½Π΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ.- ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅, Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ²ΠΎΠ΅ΠΌ Π»ΡΠ΄ΠΈ ΠΏΠΈΡΡΡ Dockerfile ΠΎΡΠ΅Π½Ρ ΠΊΡΠΈΠ²ΠΎ, Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΠΊΠ°ΠΊ ΡΡΠΎ ΠΊΠ΅ΡΠΈΡΡΠ΅ΡΡΡ, Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π² ΠΎΠ±ΡΠ°Π· Π²ΡΠ΅ ΡΡΠΎ Π½Π°Π΄ΠΎ ΠΈ Π½Π΅ Π½Π°Π΄ΠΎ, Π½Π°ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΎΡ ΠΎΠ±ΡΠ°Π·ΠΎΠ² ΠΊΠΎΡΠΎΡΡΡ
Π½Π΅ΡΡ Π² dockerhub ΠΈΠ»ΠΈ ΠΏΡΠΈΠ²Π°ΡΠ½ΠΎΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ, ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ
docker-compose
ΡΠ°ΠΉΠ»Ρ Ρ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ ΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΠ΅ΡΡΠΈΡΡΠΈΡΡΡΡ. ΠΡΠΈ ΡΡΠΎΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π³ΠΎΡΠ΄ΠΎ Π·Π°ΡΠ²Π»ΡΡΡ, ΡΡΠΎ docker ΠΊΡΡΡ, Ρ Π½ΠΈΡ Π²ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ ΠΈ HR Π²Π°ΠΆΠ½ΠΎ ΠΏΠΈΡΠ΅Ρ Π² Π²Π°ΠΊΠ°Π½ΡΠΈΠΈ: «ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ docker ΠΈ Π½Π°ΠΌ Π½ΡΠΆΠ΅Π½ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ Ρ ΡΠ°ΠΊΠΈΠΌ ΠΎΠΏΡΡΠΎΠΌ ΡΠ°Π±ΠΎΡΡ» - ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΏΡΠ΅ΡΠ»Π΅Π΄ΡΡΡ ΠΌΡΡΠ»ΠΈ ΠΎ ΠΏΠΎΠ΄Π½ΡΡΠΈΠΈ Π² docker Π²ΡΠ΅Π³ΠΎ ΠΈ Π²ΡΡ: postgresql, kafka, redis. ΠΠ°Π»Ρ, ΡΡΠΎ Π½Π΅ Π²ΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°Ρ , Π½Π΅ Π²ΡΠ΅ Π»Π΅Π³ΠΊΠΎ ΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΡΡΠΎ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΌΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ, Π° Π½Π΅ ΡΠ°ΠΌΠΈΠΌΠΈ Π²Π΅Π½Π΄ΠΎΡΠ°ΠΌΠΈ. Π ΠΊΡΡΠ°ΡΠΈ ΡΡΠ°Π·Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π²ΠΎΠΏΡΠΎΡ, Π²Π΅Π½Π΄ΠΎΡΠ° Π½Π΅ ΠΏΠ°ΡΡΡΡΡ Π½Π°ΡΡΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°Π½ΠΈΡ ΡΠ²ΠΎΠΈΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² Π² docker, ΠΏΠΎΡΠ΅ΠΌΡ ΠΆΠ΅ ΡΡΠΎ, ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ½ΠΈ ΡΡΠΎ ΡΠΎ Π·Π½Π°ΡΡ?
- Π²ΡΠ΅Π³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π²ΠΎΠΏΡΠΎΡ ΠΏΡΠΎ ΠΏΠ΅ΡΡΠΈΡΡΠ΅Π½ΡΠΈΡ Π΄Π°Π½Π½ΡΡ
ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°. ΠΈ ΡΡΡ Π΄ΡΠΌΠ°Π΅ΡΡ, ΠΌΠ½Π΅ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΈΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ
ΠΎΡΡΠΎΠ²ΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ docker volume ΠΈΠ»ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ data container ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅ΠΏΠ΅ΡΡ
deprecated
? ΠΡΠ»ΠΈ Ρ ΠΌΠΎΠ½ΡΠΈΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΡΠΎ ΠΌΠ½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ ΡΡΠΎ uid ΠΈ gid ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ id ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π·Π°ΠΏΡΡΡΠΈΠ²ΡΠ΅Π³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, ΠΈΠ½Π°ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠΌ Π±ΡΠ΄ΡΡ ΡΠΎΠ·Π΄Π°Π½Ρ Ρ ΠΏΡΠ°Π²Π°ΠΌΠΈ Π²Π»Π°Π΄Π΅Π»ΡΡΠ° root. ΠΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡvolume
ΡΠΎ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΎΡΡΠΎ Π±ΡΠ΄Ρ ΡΠΎΠ·Π΄Π°Π½Ρ Π² ΠΊΠ°ΠΊΠΎΠΌ Π½ΠΈΠ±ΡΠ΄Ρ/usr/*
ΠΈ Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΠΈΡΡΠΎΡΠΈΡ Ρ uid ΠΈ gid ΠΊΠ°ΠΊ Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅. ΠΡΠ»ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΠΎ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΈΡΡΠ²Π°ΡΡΡΡ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΈ ΠΈΡΠΊΠ°ΡΡ ΠΎΡΠ²Π΅Ρ Π½Π° Π²ΠΎΠΏΡΠΎΡ: «Π° Π² ΠΊΠ°ΠΊΠΈΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΏΠΈΡΠ΅Ρ ΡΠ°ΠΉΠ»Ρ?»
ΠΠ½Π΅ Π²ΡΠ΅Π³Π΄Π° Π½Π΅ Π½ΡΠ°Π²ΠΈΠ»ΠΎΡΡ, ΡΡΠΎ ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π΄ΠΎΠ»Π³ΠΎ Π²ΠΎΠ·ΠΈΡΡΡΡ Ρ docker-ΠΎΠΌ Π½Π° Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΌ ΡΡΠ°ΠΏΠ΅: Ρ ΠΏΡΠΈΠ΄ΡΠΌΡΠ²Π°Π» ΠΊΠ°ΠΊ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ, ΠΈΠ· ΠΊΠ°ΠΊΠΈΡ
ΠΎΠ±ΡΠ°Π·ΠΎΠ² Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ, Π΄Π΅Π»Π°Π» Makefile, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π»ΠΈ Π°Π»ΠΈΠ°ΡΡ ΠΊ Π΄Π»ΠΈΠ½Π½ΡΠΌ docker ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ. Π’Π΅ΡΠΏΠ΅ΡΡ Π½Π΅ ΠΌΠΎΠ³ docker-compose, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π½Π΅ Ρ
ΠΎΡΠ΅Π» ΡΡΠΈΡΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΡ docker. Π docker-compose up
ΠΌΠ΅Π½Ρ Π½Π°ΠΏΡΡΠ³Π°Π»Π°, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ, Π΅ΡΠ»ΠΈ ΡΠ°ΠΌ Π΅ΡΠ΅ Π²ΡΡΡΠ΅ΡΠ°Π»ΠΈΡΡ build
ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ, Π° Π½Π΅ ΡΠΆΠ΅ ΡΠΎΠ±ΡΠ°Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ°Π·Ρ. ΠΡΠ΅, ΡΡΠΎ Ρ ΡΠ΅Π°Π»ΡΠ½ΠΎ Ρ
ΠΎΡΠ΅Π» β ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Π΄Π΅Π»Π°ΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΈ Π±ΡΡΡΡΠΎ. ΠΠΎ Ρ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΌΠΎΠ³ ΡΠ°Π·Π»ΠΎΠΆΠΈΡΡ ΠΏΠΎ ΠΏΠΎΠ»ΠΎΡΠΊΠ°ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ docker.
ΠΠ½Π°ΠΊΠΎΠΌΡΡΠ²ΠΎ Ρ Ansible
ΠΠ΅Π΄Π°Π²Π½ΠΎ (ΡΡΠΎΠΉΠΊΡ ΠΌΠ΅ΡΡΡΠ΅Π² Π½Π°Π·Π°Π΄), Ρ ΠΏΠΎΡΠ°Π±ΠΎΡΠ°Π» Ρ DevOps ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ, ΠΏΠΎΡΡΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΡΠ°ΡΡΠ½ΠΈΠΊ ΠΊΠΎΡΠΎΡΠΎΠΉ, Π½Π΅Π³Π°ΡΠΈΠ²Π½ΠΎ ΠΎΡΠ½ΠΎΡΠΈΠ»ΡΡ ΠΊ docker. ΠΠΎ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ:
- docker ΠΏΡΠ°Π²ΠΈΡ iptables (Ρ ΠΎΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π² daemon.json)
- docker Π±Π°ΠΆΠ½ΡΠΉ ΠΈ Π² ΠΏΡΠΎΠ΄Π΅ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π΅Π³ΠΎ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ
- Π΅ΡΠ»ΠΈ docker daemon ΠΏΠ°Π΄Π°Π΅Ρ, ΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΏΠ°Π΄Π°ΡΡ Π²ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ Ρ ΠΈΠ½ΡΡΠ°ΡΡΡΠΊΡΡΡΠΎΠΉ
- Π² docker Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ
- Π·Π°ΡΠ΅ΠΌ docker Π΅ΡΠ»ΠΈ, Π΅ΡΡΡ Ansible ΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΌΠ°ΡΠΈΠ½Ρ
ΠΠ° ΡΠΎΠΉ ΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΈ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ»ΡΡ Ρ Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ β Ansible. ΠΠΎΠ³Π΄Π°-ΡΠΎ Ρ ΡΠ»ΡΡΠ°Π» ΠΎ Π½Π΅ΠΌ, Π½ΠΎ Π½Π΅ ΠΏΡΠΎΠ±ΠΎΠ²Π°Π» ΠΏΠΈΡΠ°ΡΡ ΡΠ²ΠΎΠΈ ΠΏΠ»Π΅ΠΉΠ±ΡΠΊΠΈ. Π ΡΠ΅ΠΏΠ΅ΡΡ Ρ Π½Π°ΡΠ°Π» ΠΏΠΈΡΠ°ΡΡ ΡΠ²ΠΎΠΈ ΡΠ°ΡΠΊΠΈ ΠΈ ΡΡΡ ΠΌΠΎΠ΅ Π²ΠΈΠ΄Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΌΠ΅Π½ΡΠ»ΠΎΡΡ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ! ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ Ρ ΠΏΠΎΠ½ΡΠ»: Ρ Ansible Π΅ΡΡΡ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΡΠ΅Ρ
ΠΆΠ΅ docker ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ², ΡΠ±ΠΎΡΠΎΠΊ ΠΎΠ±ΡΠ°Π·ΠΎΠ², ΡΠ΅ΡΠ΅ΠΉ ΠΈ ΠΏΡ., ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ, Π½ΠΎ ΠΈ Π½Π° ΡΠ΄Π°Π»Π΅Π½Π½ΡΡ
ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ
! ΠΠΎΠ΅ΠΌΡ Π²ΠΎΡΡΠΎΡΠ³Ρ Π½Π΅ Π±ΡΠ»ΠΎ ΠΏΡΠ΅Π΄Π΅Π»Π° β Ρ Π½Π°ΡΠ΅Π» ΠΠΠ ΠΠΠΠ¬ΠΠ«Π ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΈ Π²ΡΠ±ΡΠΎΡΠΈΠ» ΡΠ²ΠΎΠΈ Makefile ΠΈ docker-compose ΡΠ°ΠΉΠ»Ρ, ΠΎΠ½ΠΈ Π±ΡΠ»ΠΈ Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ Π½Π° yaml ΡΠ°ΡΠΊΠΈ. ΠΡΠ» ΡΠΌΠ΅Π½ΡΡΠ΅Π½ ΠΊΠΎΠ΄ Π·Π° ΡΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΡΠΈΠΏΠ° loop
, when
, etc.
Docker Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΡΠΈΠΏΠ° Π±Π΄
ΠΠ΅Π΄Π°Π²Π½ΠΎ Ρ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ»ΡΡ Ρ ssh ΡΡΠ½Π΅Π»ΡΠΌΠΈ. ΠΠΊΠ°Π·Π°Π»ΠΎΡΡ, ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ «ΠΏΡΠΎΠ±ΡΠΎΡΠΈΡΡ» ΠΏΠΎΡΡ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ° Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΏΠΎΡΡ. Π£Π΄Π°Π»Π΅Π½Π½ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΊΠ°ΠΊ ΠΌΠ°ΡΠΈΠ½ΠΎΠΉ Π² ΠΎΠ±Π»Π°ΠΊΠ΅, ΡΠ°ΠΊ ΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½ΠΎΠΉ, Π·Π°ΠΏΡΡΠ΅Π½Π½ΠΎΠΉ Π² VirtualBox. ΠΡΠ»ΠΈ ΠΌΠ½Π΅ ΠΈΠ»ΠΈ ΠΌΠΎΠ΅ΠΌΡ ΠΊΠΎΠ»Π»Π΅Π³Π΅ Π½ΡΠΆΠ½Π° Π±Π΄ (ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ Π½ΠΈΠ±ΡΠ΄Ρ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ), ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ΅ΡΠ²Π΅Ρ Ρ ΡΡΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ ΠΈ Π·Π°Π³Π°ΡΠΈΡΡ, ΠΊΠΎΠ³Π΄Π° ΡΠ΅ΡΠ²Π΅Ρ Π½Π΅ Π½ΡΠΆΠ΅Π½. ΠΡΠΎΠ±ΡΠΎΡ ΠΏΠΎΡΡΠΎΠ² Π΄Π°Π΅Ρ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ ΡΡΡΠ΅ΠΊΡ, ΠΊΠ°ΠΊ ΠΈ Π±Π΄, Π·Π°ΠΏΡΡΠ΅Π½Π½Π°Ρ Π² docker ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅.
ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΡΠΎΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ ΠΌΠΎΠΉ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΏΠΎΡΡ Π½Π° ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ Ρ postgresql:
ssh -L 9000:localhost:5432 [email protected]
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΠ΅ΡΠ°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅. Π’Π°ΠΊΠΈΠΌ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠ°Π·Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΈΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΠΌΠ΅ΡΡ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ postgresql, ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ c docker ΠΈ Ρ ΠΏΡΠΎΡΠΈΠΌΠΈ ΠΈΠ·ΠΎΡΡΠ΅Π½ΠΈΡΠΌΠΈ. ΠΠ° ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΡ ΠΆΠ΅ Π±Π΄ Π² ΡΠ°ΠΌΠΎΠΌ docker, Π΅ΡΠ»ΠΈ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠΏΠ΅ΡΠ΅ΡΠΈΡΠ½ΡΡ Π²Π΅ΡΡΠΈΡ ΡΡΡΠ΄Π½ΠΎ. ΠΡΠ΅ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π½ΡΠΆΠ½ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ β ΡΡΠΎ Π²ΡΠ΄Π°ΡΡ ssh Π΄ΠΎΡΡΡΠΏ!
ΠΠ΅Π΄Π°Π²Π½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°Π» ΡΡΠΎ SSH ΡΡΠ½Π΅Π»ΠΈ ΡΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π°Ρ ΡΡΠ½ΠΊΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ VPN! ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ Π½Π°ΡΡΠΎΠΈΡΡ OpenVPN ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ VPN, Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ ΠΈ Π΄Π°ΡΡ Π΅Π΅ Π² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ. ΠΡΠΎ Π²Π΅Π΄Ρ ΡΠ°ΠΊ ΠΊΡΡΡΠΎ!
ΠΠ»Π°Π³ΠΎ, AWS, GoogleCloud ΠΈ ΠΏΡΠΎΡΠΈΠ΅, Π΄Π°ΡΡ Π³ΠΎΠ΄ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΈΡ ! ΠΠ½ΠΈ ΠΊΠΎΠΏΠ΅Π΅ΡΠ½ΡΠ΅, Π΅ΡΠ»ΠΈ ΠΈΡ Π³Π°ΡΠΈΡΡ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ. Π― Π²ΡΠ΅Π³Π΄Π° Π·Π°Π΄ΡΠΌΡΠ²Π°Π»ΡΡ, Π² ΠΊΠ°ΠΊΠΈΡ ΡΠ΅Π»ΡΡ ΠΌΠ½Π΅ Π±Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΠ»ΡΡ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ ΡΠΈΠΏΠ° gcloud, ΠΊΠ°ΠΆΠ΅ΡΡΡ ΡΡΠΎ Ρ Π½Π°ΡΠ΅Π» ΠΈΡ .
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ Π½Π° Π»ΠΎΠΊΠ°Π»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΡ ΠΆΠ΅ Alpine ΠΊΠΎΡΠΎΡΡΠΉ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² docker ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°Ρ . ΠΡ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π½ΠΈΠ±ΡΠ΄Ρ Π΄ΡΡΠ³ΠΈΠ΅ ΠΎΠ±Π»Π΅Π³ΡΠ΅Π½Π½ΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Ρ ΡΡΠΎΠ±Ρ ΠΏΠΎΠ±ΡΡΡΡΠ΅Π΅ Π·Π°Π³ΡΡΠΆΠ°Π»Π°ΡΡ ΠΌΠ°ΡΠΈΠ½Π°.
ΠΡΠΎΠ³: Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π±Π΄ ΠΈ ΠΏΡΠΎΡΠΈΠ΅ ΠΈΠ½ΡΡΠ°ΡΡΡΠΊΡΡΡΠ½ΡΠ΅ ΠΏΠ»ΡΡΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π½ΡΠΆΠ½ΠΎ Π½Π° ΡΠ΄Π°Π»Π΅Π½Π½ΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ ΠΈΠ»ΠΈ Π² virtualbox. ΠΌΠ½Π΅ Π½Π΅ Π½ΡΠΆΠ΅Π½ docker Π΄Π»Ρ ΡΡΠΈΡ ΡΠ΅Π»Π΅ΠΉ.
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎ docker ΠΎΠ±ΡΠ°Π·Ρ ΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠ°ΡΠΈΡ
Π― ΡΠΆΠ΅ ΠΏΠΈΡΠ°Π»
ΠΡ Π²ΠΈΠ΄Π΅Π»ΠΈ Π³Π΄Π΅ Π½ΠΈΠ±ΡΠ΄Ρ ΡΡΠΎΠ±Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΠ ΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ ΡΠ²ΠΎΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² docker ΠΎΠ±ΡΠ°Π·Π΅?
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² ΡΡΠΎ Π±ΠΈΠ½Π°ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΏΠΎΠ΄ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΡ
ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π² docker ΠΎΠ±ΡΠ°Π· ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΡΡΡ ΠΎΡ Π½ΡΠΆΠ½ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ. ΠΡ Π½Π΅ Π·Π°Π΄ΡΠΌΡΠ²Π°Π»ΠΈΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ Π² dockerhub ΡΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ
ΠΎΠΆΠΈΡ
ΠΎΠ±ΡΠ°Π·ΠΎΠ²? ΠΠ±Π΅ΠΉΡΠ΅ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ nginx, Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ 100500 ΠΎΠ±ΡΠ°Π·ΠΎΠ² ΠΎΡ ΡΠ°Π·Π½ΡΡ
Π»ΡΠ΄Π΅ΠΉ. ΠΡΠΈ Π»ΡΠ΄ΠΈ Π½Π΅ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π»ΠΈ ΡΠ°ΠΌ nginx, ΠΎΠ½ΠΈ ΠΏΡΠΎΡΡΠΎ Π² ΡΠ²ΠΎΠΉ docker ΠΎΠ±ΡΠ°Π· Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ nginx ΠΈ ΠΏΡΠΈΠΏΡΠ°Π²ΠΈΠ»ΠΈ ΡΠ²ΠΎΠΈΠΌΠΈ ΠΊΠΎΠ½ΡΠΈΠ³Π°ΠΌΠΈ Π΄Π»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° Π·Π°ΠΏΡΡΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ².
ΠΠΎΠΎΠ±ΡΠ΅ΠΌ Ρ
ΡΠ°Π½ΠΈΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ Π² tgz, Π΅ΡΠ»ΠΈ ΠΊΠΎΠΌΡ ΡΠΎ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΡΠΎ Π² docker ΡΠΎ ΠΏΡΡΡΡ Π² Dockerfile Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ tgz, Π½Π°ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΎΡ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠ»ΡΡΠΊΠΈ ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΌΠ΅Π½ΡΡΡ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² tgz. Π’ΠΎΡ, ΠΊΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ docker ΠΎΠ±ΡΠ°Π·, Π±ΡΠ΄Π΅Ρ Π·Π½Π°ΡΡ, ΡΡΠΎ ΡΡΠΎ Π·Π° tgz ΠΈ ΡΡΠΎ Π΅ΠΌΡ Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ. ΠΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ docker
ΠΡΠΎΠ³: ΠΌΠ½Π΅ Π½Π΅ Π½ΡΠΆΠ΅Π½ docker registry, Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡ ΠΊΠ°ΠΊΠΈΠΌ Π½ΠΈΠ±ΡΠ΄Ρ S3 ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠΌ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΠΌ ΡΠΈΠΏΠ° google drive/dropbox
Docker Π² CI
ΠΡΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Π² ΠΊΠΎΡΠΎΡΡΡ Ρ ΡΠ°Π±ΠΎΡΠ°Π», ΠΏΠΎΡ ΠΎΠΆΠΈ Π΄ΡΡΠ³ Π½Π° Π΄ΡΡΠ³Π°. ΠΠ½ΠΈ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ²ΡΠ΅. Π’ΠΎ Π΅ΡΡΡ Ρ Π½ΠΈΡ Π΅ΡΡΡ ΠΊΠ°ΠΊΠΎΠ΅ ΡΠΎ ΠΎΠ΄Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΎΠ΄ΠΈΠ½ ΡΡΠ΅ΠΊ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ (Π½Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠ°ΡΠ° β ΡΡΠΎΠΉΠΊΠ° ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ).
ΠΡΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ docker Π½Π° ΡΠ²ΠΎΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ Π³Π΄Π΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ CI ΠΏΡΠΎΡΠ΅ΡΡ. ΠΠΎΠΏΡΠΎΡ β Π·Π°ΡΠ΅ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΡ Π² docker ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅ Π½Π° ΡΠ²ΠΎΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ ? ΠΠΎΡΠ΅ΠΌΡ ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ Ansible ΠΏΠ»Π΅ΠΉΠ±ΡΠΊ ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΡΠ°Π²ΠΈΡΡ Π½ΡΠΆΠ½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ nodejs, php, jdk, ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ssh ΠΊΠ»ΡΡΠΈ ΠΈ ΠΏΡ. Π½Π° ΡΠ΅ΡΠ²Π΅Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ ΡΠ±ΠΎΡΠΊΠ°?
Π‘Π΅ΠΉΡΠ°Ρ Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΡΡΠΎ ΡΡΠΎ ΡΡΡΠ΅Π»ΡΠ±Π° ΡΠ΅Π±Π΅ ΠΏΠΎ Π½ΠΎΠ³Π°ΠΌ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ docker Π½Π΅ ΠΏΡΠΈΠ½ΠΎΡΠΈΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΈΡΠ° ΡΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠ΅ΠΉ. ΠΡΠΎΠ±Π»Π΅ΠΌΡ Ρ CI Π² docker Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ Ρ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ:
- ΡΠ½ΠΎΠ²Π° Π½ΡΠΆΠ½Π΅Π½ docker ΠΎΠ±ΡΠ°Π· Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ. Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΊΠ°ΡΡ ΠΎΠ±ΡΠ°Π· ΠΈΠ»ΠΈ ΠΏΠΈΡΠ°ΡΡ ΡΠ²ΠΎΠΉ dockerfile.
- 90% ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ±ΡΠΎΡΠΈΡΡ ΠΊΠ°ΠΊΠΈΠ΅ Π½ΠΈΠ±ΡΠ΄Ρ ssh ΠΊΠ»ΡΡΠΈ, ΡΠ΅ΠΊΡΠ΅ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Ρ ΠΎΡΠ΅ΡΡΡ ΠΏΠΈΡΠ°ΡΡ Π² docker ΠΎΠ±ΡΠ°Π·.
- ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΈ ΡΠΌΠΈΡΠ°Π΅Ρ, ΡΠ΅ΡΡΡΡΡΡ Π²ΡΠ΅ ΠΊΠ΅ΡΠΈ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π½ΠΈΠΌ. ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΡΠ±ΠΎΡΠΊΠ° Π±ΡΠ΄Π΅Ρ Π·Π°Π½ΠΎΠ²ΠΎ ΡΠΊΠ°ΡΠΈΠ²Π°ΡΡ Π²ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π° ΡΡΠΎ Π΄ΠΎΠ»Π³ΠΎ ΠΈ Π½Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ, Π° Π²ΡΠ΅ΠΌΡ β Π΄Π΅Π½ΡΠ³ΠΈ.
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π½Π΅ ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΡ Π² docker ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°Ρ ( Ρ ΠΊΠΎΠ³Π΄Π° ΡΠΎ Π±ΡΠ» ΡΠ°ΠΊΠΈΠΌ ΡΠ°Π½Π°ΡΠΎΠΌ ΠΏΡΠ°Π²Π΄Π°, ΠΆΠ°Π»ΠΊΠΎ ΡΠ΅Π±Ρ Π² ΠΏΡΠΎΡΠ»ΠΎΠΌ xD ). Π java Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π΅ΡΡΠΈΠΉ ΠΈ ΠΌΠ΅Π½ΡΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Π½Π° ΡΡ ΠΊΠΎΡΠΎΡΠ°Ρ Π½ΡΠΆΠ½Π° ΡΠ΅ΠΉΡΠ°Ρ. Π nodejs ΡΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, Π΅ΡΡΡ nvm.
ΠΡΠ²ΠΎΠ΄
Π― ΡΡΠΈΡΠ°Ρ ΡΡΠΎ docker ΠΎΡΠ΅Π½Ρ ΠΌΠΎΡΡΠ½ΡΠΉ ΠΈ Π³ΠΈΠ±ΠΊΠΈΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, Π² ΡΡΠΎΠΌ Π΅Π³ΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ (Π·Π²ΡΡΠΈΡ ΡΡΡΠ°Π½Π½ΠΎ, Π΄Π°). Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π»Π΅Π³ΠΊΠΎ «ΠΏΠΎΠ΄ΡΠ°ΠΆΠΈΠ²Π°ΡΡΡΡ» Π½Π° Π½Π΅Π³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π³Π΄Π΅ Π½ΡΠΆΠ½ΠΎ ΠΈ Π½Π΅ Π½ΡΠΆΠ½ΠΎ. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΠ²ΠΎΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ, ΠΊΠ°ΠΊΠΎΠ΅ ΡΠΎ ΡΠ²ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΡΠΎΠΌ ΡΡΠΎ Π²ΡΠ΅ ΠΏΠ»Π°Π²Π½ΠΎ ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°Π΅Ρ Π² CI, ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½. DevOps ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΈΡΠ΅Ρ ΠΊΠ°ΠΊΠΈΠ΅ ΡΠΎ Π²Π΅Π»ΠΎΡΠΈΠΏΠ΅Π΄Ρ ΡΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ docker ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΡΡΠ°ΠΏΠ΅ Π² Π²Π°ΡΠ΅ΠΌ ΡΠ°Π±ΠΎΡΠ΅ΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ΅, Π½Π΅ ΡΠ°ΡΠΈΡΠ΅ Π΅Π³ΠΎ Π² ΠΏΡΠΎΠ΅ΠΊΡ Π² Π½Π°ΡΠ°Π»Π΅. ΠΠ½ Π½Π΅ ΡΠ΅ΡΠΈΡ Π²Π°ΡΠΈΡ Π±ΠΈΠ·Π½Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. ΠΠ½ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΄Π²ΠΈΠ½Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π° ΠΠ Π£ΠΠΠ ΡΡΠΎΠ²Π΅Π½Ρ ΠΈ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΡΠ²ΠΎΠΈ Π²Π°ΡΠΈΠ°Π½ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ, Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ Π΄Π΅Π»Π°ΡΡ Π΄Π²ΠΎΠΉΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ.
ΠΠΎΠ³Π΄Π° docker Π½ΡΠΆΠ΅Π½: ΠΏΡΠΈΡΠ΅Π» ΠΊ ΠΌΡΡΠ»ΠΈ ΡΡΠΎ docker ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡ Π² ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π½ΠΎ Π½Π΅ Π² ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π°
ΠΡΠ»ΠΈ Π²Ρ Π²ΡΠ΅-ΡΠ°ΠΊΠΈ ΡΠ΅ΡΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ docker, ΡΠΎ:
- Π±ΡΠ΄ΡΡΠ΅ ΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ΠΎ ΠΎΡΡΠΎΡΠΎΠΆΠ½Ρ
- Π½Π΅ Π½Π°Π²ΡΠ·ΡΠ²Π°ΠΉΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ docker ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ
- Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΡΠΉΡΠ΅ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅, Π½Π΅ ΡΠ°Π·ΠΌΠ°Π·ΡΠ²Π°ΠΉΡΠ΅ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠΌ Dockefile ΠΈ docker-compose
PS:
- ΠΠ΅Π΄Π°Π²Π½ΠΎ Π½Π°ΡΠΊΠ½ΡΠ»ΡΡ Π½Π°
packer ΠΈ Π³ΠΎΠ²ΠΎΡΡΡ ΠΎΠ½ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Ansible ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ°Π·ΠΎΠ² (Π² Ρ.Ρ. docker image) ΡΠΎΠΆΠ΅ ΠΏΡΠΎ docker, ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π°Ρ ΡΡΠ°ΡΡΡ
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ ΡΡΠΎ Π΄ΠΎΡΠΈΡΠ°Π»ΠΈ, ΠΆΠ΅Π»Π°Ρ Π²Π°ΠΌ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ Π² Π²Π°ΡΠΈΡ Π΄Π΅Π»Π°Ρ ΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΡΡ ΡΠ°Π±ΠΎΡΠΈΡ Π΄Π½Π΅ΠΉ!
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com