Π”ΠΎΡ†ΠΊΠ΅Ρ€ ЦомпосС: ΠΎΠ΄ Ρ€Π°Π·Π²ΠΎΡ˜Π° Π΄ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΡšΠ΅

ΠŸΡ€Π΅Π²ΠΎΠ΄ Ρ‚Ρ€Π°Π½ΡΠΊΡ€ΠΈΠΏΡ†ΠΈΡ˜Π΅ подцаста ΠΏΡ€ΠΈΠΏΡ€Π΅ΠΌΡ™Π΅Π½ Ρƒ ΠΈΡˆΡ‡Π΅ΠΊΠΈΠ²Π°ΡšΡƒ ΠΏΠΎΡ‡Π΅Ρ‚ΠΊΠ° курса "Π›ΠΈΠ½ΡƒΠΊ администратор"

Π”ΠΎΡ†ΠΊΠ΅Ρ€ ЦомпосС: ΠΎΠ΄ Ρ€Π°Π·Π²ΠΎΡ˜Π° Π΄ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΡšΠ΅

Π”ΠΎΡ†ΠΊΠ΅Ρ€ ЦомпосС јС Π½Π΅Π²Π΅Ρ€ΠΎΠ²Π°Ρ‚Π°Π½ Π°Π»Π°Ρ‚ Π·Π° ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΠ΅ Ρ€Π°Π΄Π½ΠΎΠ³
ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ΅ Π·Π° стСк који сС користи Ρƒ вашој Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜ΠΈ. ΠžΠΌΠΎΠ³ΡƒΡ›Π°Π²Π° Π²Π°ΠΌ Π΄Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡˆΠ΅Ρ‚Π΅
сваку ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ вашС Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅, ΠΏΡ€Π°Ρ‚Π΅Ρ›ΠΈ Ρ˜Π°ΡΠ½Ρƒ ΠΈ Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½Ρƒ синтаксу Ρƒ Π˜ΠΠœΠ›-
Ρ„Π°Ρ˜Π»ΠΎΠ²ΠΈ
.

Π‘Π° појавом Π΄ΠΎΡ†ΠΊΠ΅Ρ€ цомпосС Π²3 ΠΎΠ²Π΅ Π˜ΠΠœΠ› Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅ сС ΠΌΠΎΠ³Ρƒ користити Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Ρƒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΌ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΡƒ ΠΊΠ°Π΄Π° сС Ρ€Π°Π΄ΠΈ са њима
кластСр Π”ΠΎΡ†ΠΊΠ΅Ρ€ Π‘Π²Π°Ρ€ΠΌ.

Али Π΄Π° Π»ΠΈ Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈ Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ користити исту Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΡƒ Π΄ΠΎΡ†ΠΊΠ΅Ρ€-цомпосС Ρƒ
Ρ€Π°Π·Π²ΠΎΡ˜Π½ΠΎΠΌ процСсу ΠΈΡƒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΌ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΡƒ? Или користитС исту Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΡƒ Π·Π°
ΠΈΠ½ΡΡ†Π΅Π½Π°Ρ†ΠΈΡ˜Π°? Па, Π³Π΅Π½Π΅Ρ€Π°Π»Π½ΠΎ, Π΄Π°, Π°Π»ΠΈ Π·Π° ΠΎΠ²Ρƒ функционалност Π½Π°ΠΌ јС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ слСдСћС:

  • Π˜Π½Ρ‚Π΅Ρ€ΠΏΠΎΠ»Π°Ρ†ΠΈΡ˜Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Ρ™ΠΈΠ²ΠΈΡ…: ΠΊΠΎΡ€ΠΈΡˆΡ›Π΅ΡšΠ΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Ρ™ΠΈΠ²ΠΈΡ… ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ° Π·Π° Π½Π΅ΠΊΠ΅
    врСдности којС сС ΠΌΠ΅ΡšΠ°Ρ˜Ρƒ Ρƒ свакој срСдини.
  • Π—Π°ΠΌΠ΅Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π΅: могућност Π΄Π΅Ρ„ΠΈΠ½ΠΈΡΠ°ΡšΠ° сСкундС (ΠΈΠ»ΠΈ Π±ΠΈΠ»ΠΎ којС
    још јСдан слСдСћи) Π΄ΠΎΡ†ΠΊΠ΅Ρ€-цомпосС Ρ„Π°Ρ˜Π» који Ρ›Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚ΠΈ Π½Π΅ΡˆΡ‚ΠΎ Ρƒ Π²Π΅Π·ΠΈ
    ΠΏΡ€Π²ΠΎ, Π° Π΄ΠΎΡ†ΠΊΠ΅Ρ€ цомпосС Ρ›Π΅ сС ΠΏΠΎΠ±Ρ€ΠΈΠ½ΡƒΡ‚ΠΈ Π·Π° спајањС ΠΎΠ±Π΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅.

Π Π°Π·Π»ΠΈΠΊΠ΅ ΠΈΠ·ΠΌΠ΅Ρ’Ρƒ Ρ€Π°Π·Π²ΠΎΡ˜Π½ΠΈΡ… ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΈΡ… Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°

Π’ΠΎΠΊΠΎΠΌ Ρ€Π°Π·Π²ΠΎΡ˜Π°, Π½Π°Ρ˜Π²Π΅Ρ€ΠΎΠ²Π°Ρ‚Π½ΠΈΡ˜Π΅ Ρ›Π΅Ρ‚Π΅ ΠΆΠ΅Π»Π΅Ρ‚ΠΈ Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅ ΠΊΠΎΠ΄Π°
Ρ€Π΅Π°Π»Π½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Ρƒ. Π”Π° бистС Ρ‚ΠΎ ΡƒΡ€Π°Π΄ΠΈΠ»ΠΈ, ΠΎΠ±ΠΈΡ‡Π½ΠΎ сС Ρƒ њСга ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π° Π²ΠΎΠ»ΡƒΠΌΠ΅Π½ са ΠΈΠ·Π²ΠΎΡ€Π½ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ
ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ који садрТи Π²Ρ€Π΅ΠΌΠ΅ ΠΈΠ·Π²ΠΎΡ’Π΅ΡšΠ° Π·Π° Π²Π°ΡˆΡƒ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ. Али Π·Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ΅
Овај ΠΌΠ΅Ρ‚ΠΎΠ΄ нијС ΠΏΠΎΠ³ΠΎΠ΄Π°Π½.

Π£ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΡšΠΈ ΠΈΠΌΠ°Ρ‚Π΅ кластСр са ΠΌΠ½ΠΎΠ³ΠΎ Ρ‡Π²ΠΎΡ€ΠΎΠ²Π°, Π° Π·Π°ΠΏΡ€Π΅ΠΌΠΈΠ½Π° јС Π»ΠΎΠΊΠ°Π»Π½Π°
Ρƒ односу Π½Π° Ρ‡Π²ΠΎΡ€ Π½Π° ΠΊΠΎΠΌΠ΅ јС ΠΏΠΎΠΊΡ€Π΅Π½ΡƒΡ‚ ваш ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ (ΠΈΠ»ΠΈ услуга), Ρ‚Π°ΠΊΠΎ Π΄Π° Π½Π΅ Ρ€Π°Π΄ΠΈΡ‚Π΅
ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Ρ‚ΠΈ ΠΈΠ·Π²ΠΎΡ€Π½ΠΈ ΠΊΠΎΠ΄ Π±Π΅Π· слоТСних ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π° којС ΡƒΠΊΡ™ΡƒΡ‡ΡƒΡ˜Ρƒ
ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° ΠΊΠΎΠ΄Π°, сигнали ΠΈΡ‚Π΄.

УмСсто Ρ‚ΠΎΠ³Π°, ΠΎΠ±ΠΈΡ‡Π½ΠΎ ΠΆΠ΅Π»ΠΈΠΌΠΎ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌΠΎ слику са ΠΎΠ΄Ρ€Π΅Ρ’Π΅Π½ΠΎΠΌ Π²Π΅Ρ€Π·ΠΈΡ˜ΠΎΠΌ вашСг ΠΊΠΎΠ΄Π°.
Π£ΠΎΠ±ΠΈΡ‡Π°Ρ˜Π΅Π½ΠΎ јС Π΄Π° Π³Π° ΠΎΠ·Π½Π°Ρ‡ΠΈΡ‚Π΅ ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π°Ρ˜ΡƒΡ›ΠΎΠΌ ΠΎΠ·Π½Π°ΠΊΠΎΠΌ (ΠΌΠΎΠΆΠ΅Ρ‚Π΅ користити сСмантички
Π²Π΅Ρ€Π·ΠΈΠΎΠ½ΠΈΡΠ°ΡšΠ΅ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ систСм ΠΏΠΎ вашСм Π½Π°Ρ…ΠΎΡ’Π΅ΡšΡƒ).

Π¦ΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΈΠΎΠ½ ΠžΠ²Π΅Ρ€Ρ€ΠΈΠ΄Π΅

Π‘ ΠΎΠ±Π·ΠΈΡ€ΠΎΠΌ Π½Π° Ρ€Π°Π·Π»ΠΈΠΊΠ΅ ΠΈ Π΄Π° сС вашС зависности ΠΌΠΎΠ³Ρƒ Ρ€Π°Π·Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΠΈ Ρƒ ΡΡ†Π΅Π½Π°Ρ€ΠΈΡ˜ΠΈΠΌΠ°
Ρ€Π°Π·Π²ΠΎΡ˜ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΡšΠ°, јасно јС Π΄Π° Ρ›Π΅ Π½Π°ΠΌ Ρ‚Ρ€Π΅Π±Π°Ρ‚ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅.

Π”ΠΎΡ†ΠΊΠ΅Ρ€ цомпосС ΠΏΠΎΠ΄Ρ€ΠΆΠ°Π²Π° спајањС Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚ΠΈΡ… Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° Π·Π° ΡΠ°ΡΡ‚Π°Π²Ρ™Π°ΡšΠ΅
Π΄ΠΎΠ±ΠΈΡ‚ΠΈ ΠΊΠΎΠ½Π°Ρ‡Π½Ρƒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Ρƒ. Како ΠΎΠ²ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡˆΠ΅ ΠΌΠΎΠΆΠ΅ сС Π²ΠΈΠ΄Π΅Ρ‚ΠΈ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ:

$ cat docker-compose.yml
version: "3.2"

services:
  whale:
    image: docker/whalesay
    command: ["cowsay", "hello!"]
$ docker-compose up
Creating network "composeconfigs_default" with the default driver
Starting composeconfigs_whale_1
Attaching to composeconfigs_whale_1
whale_1  |  ________
whale_1  | < hello! >
whale_1  |  --------
whale_1  |     
whale_1  |      
whale_1  |       
whale_1  |                     ##        .
whale_1  |               ## ## ##       ==
whale_1  |            ## ## ## ##      ===
whale_1  |        /""""""""""""""""___/ ===
whale_1  |   ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
whale_1  |        ______ o          __/
whale_1  |                     __/
whale_1  |           __________/
composeconfigs_whale_1 exited with code 0

Као ΡˆΡ‚ΠΎ јС Ρ€Π΅Ρ‡Π΅Π½ΠΎ, Π΄ΠΎΡ†ΠΊΠ΅Ρ€ цомпосС ΠΏΠΎΠ΄Ρ€ΠΆΠ°Π²Π° комбиновањС вишС ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡ˜Π° -
Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅, ΠΎΠ²ΠΎ Π²Π°ΠΌ ΠΎΠΌΠΎΠ³ΡƒΡ›Π°Π²Π° Π΄Π° Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΡ˜ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ†ΠΈ. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

$ cat docker-compose.second.yml
version: "3.2"
services:
  whale:
    command: ["cowsay", "bye!"]

$ docker-compose -f docker-compose.yml -f docker-compose.second.yml up
Creating composeconfigs_whale_1
Attaching to composeconfigs_whale_1
whale_1  |  ______
whale_1  | < bye! >
whale_1  |  ------
whale_1  |     
whale_1  |      
whale_1  |       
whale_1  |                     ##        .
whale_1  |               ## ## ##       ==
whale_1  |            ## ## ## ##      ===
whale_1  |        /""""""""""""""""___/ ===
whale_1  |   ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
whale_1  |        ______ o          __/
whale_1  |                     __/
whale_1  |           __________/
composeconfigs_whale_1 exited with code 0

Ова синтакса нијС баш Π·Π³ΠΎΠ΄Π½Π° Ρ‚ΠΎΠΊΠΎΠΌ Ρ€Π°Π·Π²ΠΎΡ˜Π°, ΠΊΠ°Π΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°
ΠΌΠΎΡ€Π°Ρ›Π΅ Π΄Π° сС ΡƒΡ€Π°Π΄ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚Π°.

Π‘Ρ€Π΅Ρ›ΠΎΠΌ, Π΄ΠΎΡ†ΠΊΠ΅Ρ€ цомпосС аутоматски Ρ‚Ρ€Π°ΠΆΠΈ посСбну Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΡƒ ΠΏΠΎΠ΄ Π½Π°Π·ΠΈΠ²ΠΎΠΌ
Π΄ΠΎΡ†ΠΊΠ΅Ρ€-цомпосС.ΠΎΠ²Π΅Ρ€Ρ€ΠΈΠ΄Π΅.ΠΈΠΌΠ» Π΄Π° Π½Π°Π΄Ρ˜Π°Ρ‡Π° врСдности Π΄ΠΎΡ†ΠΊΠ΅Ρ€-цомпосС.ΠΈΠΌΠ». Ако
ΠΏΡ€Π΅ΠΈΠΌΠ΅Π½ΡƒΡ˜Ρ‚Π΅ Π΄Ρ€ΡƒΠ³Ρƒ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΡƒ, Π΄ΠΎΠ±ΠΈΡ›Π΅Ρ‚Π΅ исти Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚, само користСћи ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π½Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

$ mv docker-compose.second.yml docker-compose.override.yml
$ docker-compose up
Starting composeconfigs_whale_1
Attaching to composeconfigs_whale_1
whale_1  |  ______
whale_1  | < bye! >
whale_1  |  ------
whale_1  |     
whale_1  |      
whale_1  |       
whale_1  |                     ##        .
whale_1  |               ## ## ##       ==
whale_1  |            ## ## ## ##      ===
whale_1  |        /""""""""""""""""___/ ===
whale_1  |   ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
whale_1  |        ______ o          __/
whale_1  |                     __/
whale_1  |           __________/
composeconfigs_whale_1 exited with code 0

Π£ Ρ€Π΅Π΄Ρƒ, Ρ‚ΠΎ јС лакшС Π·Π°ΠΏΠ°ΠΌΡ‚ΠΈΡ‚ΠΈ.

Π˜Π½Ρ‚Π΅Ρ€ΠΏΠΎΠ»Π°Ρ†ΠΈΡ˜Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Ρ™ΠΈΠ²ΠΈΡ…

ΠŸΠΎΠ΄Ρ€ΡˆΠΊΠ° Π·Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΠΎΠ»Π°Ρ†ΠΈΡ˜Π°
ΠŸΡ€ΠΎΠΌΠ΅Π½Ρ™ΠΈΠ²Π΅
ΠΈ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π½Π΅ врСдности. Π’ΠΎ Ρ˜Π΅ΡΡ‚, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡ‡ΠΈΠ½ΠΈΡ‚ΠΈ слСдСћС:

services:
  my-service:
    build:
      context: .
    image: private.registry.mine/my-stack/my-service:${MY_SERVICE_VERSION:-latest}
...

И Π°ΠΊΠΎ Ρ‚ΠΎ ΡƒΡ€Π°Π΄ΠΈΡ‚Π΅ Π΄ΠΎΡ†ΠΊΠ΅Ρ€-цомпосС Π±ΡƒΠΈΠ»Π΄ (ΠΈΠ»ΠΈ пусх) Π±Π΅Π· ΠΏΡ€ΠΎΠΌΠ΅Π½Ρ™ΠΈΠ²Π΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ°
$МИ_Π‘Π•Π Π’Π˜Π¦Π•_Π’Π•Π Π‘Π˜ΠžΠ, врСдност Ρ›Π΅ сС користити најновијиали Π°ΠΊΠΎ поставитС
врСдност ΠΏΡ€ΠΎΠΌΠ΅Π½Ρ™ΠΈΠ²Π΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ° ΠΏΡ€Π΅ ΠΈΠ·Π³Ρ€Π°Π΄ΡšΠ΅, ΠΎΠ½Π° Ρ›Π΅ сС користити ΠΏΡ€ΠΈΠ»ΠΈΠΊΠΎΠΌ ΠΈΠ·Π³Ρ€Π°Π΄ΡšΠ΅ ΠΈΠ»ΠΈ Π³ΡƒΡ€Π°ΡšΠ°
Ρƒ рСгистар ΠΏΡ€ΠΈΠ²Π°Ρ‚Π΅.рСгистри.ΠΌΠΈΠ½Π΅.

Моји ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈ

ΠŸΡ€ΠΈΡΡ‚ΡƒΠΏΠΈ који Ρ€Π°Π΄Π΅ Π·Π° ΠΌΠ΅Π½Π΅ ΠΌΠΎΠ³Ρƒ Ρ€Π°Π΄ΠΈΡ‚ΠΈ ΠΈ Π·Π° вас. ΠŸΡ€Π°Ρ‚ΠΈΠΌ ΠΎΠ²Π΅
Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π°:

  • Π‘Π²ΠΈ моји стСкови Π·Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΡšΡƒ, Ρ€Π°Π·Π²ΠΎΡ˜ (ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³Π° ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ°) су дСфинисани ΠΊΡ€ΠΎΠ·
    Π΄ΠΎΡ†ΠΊΠ΅Ρ€-цомпосС Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅
  • ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½ΠΈ Ρ„Π°Ρ˜Π»ΠΎΠ²ΠΈ су ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ Π΄Π° ΠΏΠΎΠΊΡ€ΠΈΡ˜Ρƒ сва моја ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ° ΡˆΡ‚ΠΎ јС вишС ΠΌΠΎΠ³ΡƒΡ›Π΅
    ΠΈΠ·Π±Π΅Π³Π°Π²Π°Ρ˜Ρ‚Π΅ Π΄ΡƒΠΏΠ»ΠΈΡ€Π°ΡšΠ΅.
  • ΠŸΠΎΡ‚Ρ€Π΅Π±Π½Π° ΠΌΠΈ јС јСдна Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π° Ρ€Π°Π΄ Ρƒ сваком ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΡƒ.
  • Π“Π»Π°Π²Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° јС дСфинисана Ρƒ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ†ΠΈ Π΄ΠΎΡ†ΠΊΠ΅Ρ€-цомпосС.ΠΈΠΌΠ».
  • ΠŸΡ€ΠΎΠΌΠ΅Π½Ρ™ΠΈΠ²Π΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ° сС користС Π·Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡΠ°ΡšΠ΅ ΠΎΠ·Π½Π°ΠΊΠ° слика ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³
    ΠΏΡ€ΠΎΠΌΠ΅Π½Ρ™ΠΈΠ²Π΅ којС ΠΌΠΎΠ³Ρƒ Π΄Π° Π²Π°Ρ€ΠΈΡ€Π°Ρ˜Ρƒ ΠΎΠ΄ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ° Π΄ΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ° (ΠΏΡ€ΠΈΠΏΡ€Π΅ΠΌΠ°, ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ˜Π°,
    ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΡšΠ°).
  • ВрСдности ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΈΡ… Π²Π°Ρ€ΠΈΡ˜Π°Π±Π»ΠΈ сС користС ΠΊΠ°ΠΎ врСдности Π·Π°
    ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π½ΠΎ, ΠΎΠ²ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€Π° Ρ€ΠΈΠ·ΠΈΠΊΠ΅ Π°ΠΊΠΎ сС стСк ΠΏΠΎΠΊΡ€Π΅Π½Π΅ Ρƒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΡšΠΈ Π±Π΅Π·
    поставити ΠΏΡ€ΠΎΠΌΠ΅Π½Ρ™ΠΈΠ²Ρƒ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ°.
  • Π”Π° бистС ΠΏΠΎΠΊΡ€Π΅Π½ΡƒΠ»ΠΈ услугу Ρƒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΌ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΡƒ, користитС ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π΄ΠΎΡ†ΠΊΠ΅Ρ€ стацк Π΄Π΅ΠΏΠ»ΠΎΠΈ - цомпосС-Ρ„ΠΈΠ»Π΅ Π΄ΠΎΡ†ΠΊΠ΅Ρ€-цомпосС.ΠΈΠΌΠ» -Π²ΠΈΡ‚Ρ…-рСгистри-Π°ΡƒΡ‚Ρ… ΠΌΠΈ-стацк-Π½Π°ΠΌΠ΅.
  • Π Π°Π΄Π½ΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ΅ сС ΠΏΠΎΠΊΡ€Π΅Ρ›Π΅ ΠΏΠΎΠΌΠΎΡ›Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π΄ΠΎΡ†ΠΊΠ΅Ρ€-цомпосС ΡƒΠΏ -Π΄.

ПоглСдајмо Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π°Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

# docker-compose.yml
...
services:
  my-service:
    build:
      context: .
    image: private.registry.mine/my-stack/my-service:${MY_SERVICE_VERSION:-latest}
    environment:
      API_ENDPOINT: ${API_ENDPOINT:-https://production.my-api.com}
...

И

# docker-compose.override.yml
...
services:
  my-service:
    ports: # This is needed for development!
      - 80:80
    environment:
      API_ENDPOINT: https://devel.my-api.com
    volumes:
      - ./:/project/src
...

ја ΠΌΠΎΠ³Ρƒ користити Π΄ΠΎΡ†ΠΊΠ΅Ρ€-цомпосС (Π΄ΠΎΡ†ΠΊΠ΅Ρ€-цомпосС ΡƒΠΏ)Π·Π° ΠΏΠΎΠΊΡ€Π΅Ρ‚Π°ΡšΠ΅ стСка
Ρ€Π°Π·Π²ΠΎΡ˜Π½ΠΈ Ρ€Π΅ΠΆΠΈΠΌ са ΡƒΠ³Ρ€Π°Ρ’Π΅Π½ΠΈΠΌ ΠΈΠ·Π²ΠΎΡ€Π½ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ /ΠΏΡ€ΠΎΡ˜Π΅ΠΊΠ°Ρ‚/срц.

ΠœΠΎΠ³Ρƒ Π΄Π° користим ΠΎΠ²Π΅ истС Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅ Ρƒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΡšΠΈ! И Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ‚ΠΈΠ²Π½ΠΎ Π±ΠΈΡ… ΠΌΠΎΠ³Π°ΠΎ Π΄Π° користим
исти Ρ„Π°Ρ˜Π» Π΄ΠΎΡ†ΠΊΠ΅Ρ€-цомпосС.ΠΈΠΌΠ» Π·Π° ΠΈΠ½ΡΡ†Π΅Π½Π°Ρ†ΠΈΡ˜Ρƒ. Π”Π° ΠΏΡ€ΠΎΡˆΠΈΡ€ΠΈΠΌ ΠΎΠ²ΠΎ Π½Π°
ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΡ˜Ρƒ, само Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ ΠΈ ΠΏΠΎΡˆΠ°Ρ™Π΅ΠΌ слику са ΡƒΠ½Π°ΠΏΡ€Π΅Π΄ дСфинисаном ΠΎΠ·Π½Π°ΠΊΠΎΠΌ
Ρƒ Ρ„Π°Π·ΠΈ ЦИ:

export MY_SERVICE_VERSION=1.2.3
docker-compose -f docker-compose.yml build
docker-compose -f docker-compose.yml push

Π£ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΡšΠΈ, ΠΎΠ²ΠΎ сС ΠΌΠΎΠΆΠ΅ ΠΏΠΎΠΊΡ€Π΅Π½ΡƒΡ‚ΠΈ ΠΏΠΎΠΌΠΎΡ›Ρƒ слСдСћих ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ:

export MY_SERVICE_VERSION=1.2.3
docker stack deploy my-stack --compose-file docker-compose.yml --with-registry-auth

А Π°ΠΊΠΎ ΠΆΠ΅Π»ΠΈΡ‚Π΅ Π΄Π° ΡƒΡ€Π°Π΄ΠΈΡ‚Π΅ исто Π½Π° сцСни, само Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡˆΠ΅Ρ‚Π΅
Π½Π΅ΠΎΠΏΡ…ΠΎΠ΄Π½Π΅ Π²Π°Ρ€ΠΈΡ˜Π°Π±Π»Π΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ° Π·Π° Ρ€Π°Π΄ Ρƒ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΡƒ Π·Π° ΠΏΠΎΡΡ‚Π°Π²Ρ™Π°ΡšΠ΅:

export MY_SERVICE_VERSION=1.2.3
export API_ENDPOINT=http://staging.my-api.com
docker stack deploy my-stack --compose-file docker-compose.yml --with-registry-auth

Као Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Ρ‚ΠΎΠ³Π°, користили смо Π΄Π²Π΅ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚Π΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅ Π·Π° Π΄ΠΎΡ†ΠΊΠ΅Ρ€-цомпосС, којС Π±Π΅Π·
Π”ΡƒΠΏΠ»ΠΈΠΊΠ°Ρ‚ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π΅ сС ΠΌΠΎΠ³Ρƒ користити Π·Π° Π±ΠΈΠ»ΠΎ којС ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ΅ којС ΠΈΠΌΠ°Ρ‚Π΅!

Π‘Π°Π·Π½Π°Ρ˜Ρ‚Π΅ вишС ΠΎ курсу "Π›ΠΈΠ½ΡƒΠΊ администратор"

Π˜Π·Π²ΠΎΡ€: Π²Π²Π².Ρ…Π°Π±Ρ€.Ρ†ΠΎΠΌ

Π”ΠΎΠ΄Π°Ρ˜ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€