Docker Compose: laga bilaabo horumarinta ilaa wax soo saarka

Turjumaada qoraalka podcast-ka ee la diyaariyay iyadoo la filayo bilowga koorsada "Maamulaha Linux"

Docker Compose: laga bilaabo horumarinta ilaa wax soo saarka

Docker Compose waa qalab la yaab leh oo lagu abuurayo shaqo
jawiga kaydka loo isticmaalo codsigaga. Waxay kuu ogolaanaysaa inaad qeexdo
qayb kasta oo ka mid ah codsigaaga, adoo raacaya jumlad cad oo fudud YAML-
faylasha
.

Imaanshiyaha docker curiye v3 faylalkan YAML waxaa si toos ah loogu isticmaali karaa deegaanka wax soo saarka marka la shaqaynayo
koox Docker raxan.

Laakin tani miyay ka dhigan tahay inaad isticmaali karto isla fayl-ka kooban ee docker-ka
habka horumarinta iyo deegaanka wax soo saarka? Ama isticmaal isla fayl isku mid ah
diyaarinta? Hagaag, guud ahaan, haa, laakiin shaqeyntan waxaan u baahanahay kuwa soo socda:

  • Isdhexgalka isbedbeddelaya: isticmaalka doorsoomayaasha deegaanka qaarkood
    qiyamka isbedelaya deegaan kasta.
  • Habayntu way dhaaftay: awooda lagu qeexo ilbiriqsi (ama mid kasta
    mid kale oo xiga) docker-compose file kaas oo bedeli doona wax ku saabsan
    marka hore, iyo docker compose ayaa daryeeli doona isku darka labada fayl.

Farqiga u dhexeeya horumarinta iyo faylasha wax soo saarka

Inta lagu jiro horumarinta, waxay u badan tahay inaad rabto inaad hubiso isbeddelada koodka
waqtiga dhabta ah. Si tan loo sameeyo, badanaa mugga leh koodhka isha ayaa lagu dhejiyaa gudaha
weel ka kooban runtime codsigaaga. Laakin deegaan wax soo saar
Habkani kuma habboona.

Wax soo saarka, waxaad haysataa koox leh qandho badan, muggana waa maxalli
marka loo eego noodhka uu weelkaagu (ama adeeggaagu) ku socdo, si aadan yeelin
waxaad ku dhejin kartaa koodhka isha iyada oo aan la helin hawlo adag oo ay ku jiraan
kood isku xidhka, calaamadaha, iwm.

Taa beddelkeeda, waxaan inta badan rabnaa inaan abuurno sawir leh nooc gaar ah oo koodkaaga ah.
Waa caado in lagu calaamadiyo summada ku habboon (waxaad isticmaali kartaa semantic
versioning ama nidaam kale oo aad go'aansato).

Kordhinta qaabaynta

Marka la eego farqiga u dhexeeya iyo in ku tiirsanaantaadu ay ku kala duwanaan karaan xaaladaha
horumarinta iyo wax soo saarka, way caddahay in aan u baahan doono faylasha qaabeynta kala duwan.

Docker compose waxa ay taageertaa isku darka faylalka kala duwan ee curinta
Hel qaabeynta kama dambaysta ah. Sida tani u shaqeyso waxaa lagu arki karaa tusaalaha:

$ 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

Sida la sheegay, docker-ka curiye waxay taageertaa isku-darka curiyeyaasha badan -
Faylasha, tani waxay kuu ogolaaneysaa inaad ka gudubto xuduudaha kala duwan ee faylka labaad. Tusaale ahaan:

$ 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

syntax Tani ma aha mid aad u habboon inta lagu jiro horumarinta, marka amarka
waxay u baahan doontaa in la sameeyo marar badan.

Nasiib wanaag, docker compose wuxuu si toos ah u raadiyaa fayl gaar ah oo la yiraahdo
docker-ka kooban.override.yml in laga gudbo qiyamka docker-compose.yml. Hadday
Dib u magacaw faylka labaad, waxaad helaysaa isla natiijada, kaliya adoo isticmaalaya amarka asalka ah:

$ 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

Hagaag, taasi way fududahay in la xasuusto.

Is-dhexgalka Isbeddellada

Taageerada qaabaynta faylasha isdhexgalka
doorsoomayaasha
iyo qiimaha caadiga ah. Taasi waa, waxaad samayn kartaa waxyaabaha soo socda:

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

Oo haddii aad sameyso docker-ka kooban dhis (ama riix) aan lahayn doorsoome deegaan
$MY_SERVICE_VERSION, qiimaha ayaa la isticmaali doonaa ugu dambeeyeylaakiin haddii aad dejiso
qiimaha doorsoomayaasha deegaanka ka hor inta aan la dhisin, waxa la isticmaali doona marka la dhisayo ama la riixayo
diiwaanka gaar ah.diwaangelinta. aniga.

Mabaadi'dayda

Hababka aniga ii shaqeeya ayaa laga yaabaa inay adigana kuu shaqeeyaan. Waxaan raacaa kuwan
xeerar fudud:

  • Dhammaan xirmooyinkayga wax-soo-saarka, horumarinta (ama deegaannada kale) ayaa lagu qeexay
    docker-ka kooban faylal
  • Faylasha habaynta ayaa loo baahan yahay si ay u daboolaan dhammaan deegaanadeyda, intii suurtagal ah
    iska ilaali nuqul ka mid ah.
  • Waxaan u baahanahay hal amar oo fudud si aan uga shaqeeyo deegaan kasta.
  • Qaabeynta ugu weyn waxaa lagu qeexay faylka docker-compose.yml.
  • Doorsoomayaasha deegaanka ayaa loo isticmaalaa in lagu qeexo tags sawirka ama kuwa kale
    doorsoomayaal ku kala duwanaan kara deegaan ilaa deegaan (habaynta, isdhexgalka,
    wax soo saarka).
  • Qiimaha doorsoomayaasha wax soo saarka waxaa loo isticmaalaa sida qiimaha
    Sida caadiga ah, tani waxay yaraynaysaa khataraha haddii xirmada lagu bilaabo wax soo saarka la'aanteed
    dejisan doorsoome deegaan.
  • Si aad adeeg uga bilowdo deegaanka wax soo saarka, adeegso amarka docker stack deploy - compose-file docker-compose.yml -with-registry-auth my-stack-name.
  • Deegaanka shaqada waxaa lagu bilaabay adeegsiga amarka docker-hirgelinta -d.

Aynu eegno tusaale fudud.

# 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
...

waan isticmaali karaa docker-compose (Docker-compose up)si aad u socodsiiso xirmada
qaabka horumarinta oo leh koodka isha ku rakiban /project/src.

Waxaan u isticmaali karaa isla faylashaas wax soo saarka! Oo hubaal waan isticmaali karaa
fayl isku mid ah docker-compose.yml habaynta. Si loo kordhiyo tan
wax soo saarka, kaliya waxaan u baahanahay inaan dhiso oo u diro sawirka oo leh calaamad hore loo sii qeexay
Marxaladda CI:

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

Soo saarista, tan waxaa lagu socodsiin karaa iyadoo la adeegsanayo amarada soo socda:

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

Oo haddii aad rabto inaad sidaas oo kale ku sameyso masraxa, kaliya waxaad u baahan tahay inaad qeexdo
doorsoomayaasha deegaanka ee lagama maarmaanka u ah ka shaqaynta jawiga diyaarinta:

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

Natiijo ahaan, waxaan isticmaalnay laba fayl oo kala duwan oo docker-compose ah, kuwaas oo aan lahayn
Habaynta nuqul ka mid ah ayaa loo isticmaali karaa deegaan kasta oo aad haysato!

Wax badan ka baro koorsada "Maamulaha Linux"

Source: www.habr.com

Add a comment