Docker Compose: daga haɓakawa zuwa samarwa

Fassarar fassarar kwasfan fayiloli da aka shirya cikin tsammanin farkon darasi "Linux Administrator"

Docker Compose: daga haɓakawa zuwa samarwa

Docker Compose kayan aiki ne mai ban mamaki don ƙirƙirar aiki
yanayi don tari da aka yi amfani da shi a cikin aikace-aikacen ku. Yana ba ka damar ayyana
kowane bangare na aikace-aikacen ku, yana bin tsayayyen tsari mai sauƙi a ciki YAML-
fayiloli
.

Tare da zuwan docker ya rubuta v3 ana iya amfani da waɗannan fayilolin YAML kai tsaye a cikin yanayin samarwa lokacin aiki tare da
tari Ckerungiyar Docker.

Amma wannan yana nufin cewa zaku iya amfani da fayil ɗin docker iri ɗaya a ciki
tsarin ci gaba da kuma a cikin yanayin samarwa? Ko amfani da fayil iri ɗaya don
shiryawa? To, a gaba ɗaya, eh, amma don wannan aikin muna buƙatar waɗannan abubuwa:

  • Matsala mai canzawa: yin amfani da masu canjin yanayi ga wasu
    dabi'un da ke canzawa a kowane yanayi.
  • Kanfigareshan ya soke: ikon ayyana na biyu (ko kowane
    wani na gaba) docker-compose file wanda zai canza wani abu game da
    na farko, kuma docker compose zai kula da haɗa fayilolin biyu.

Bambance-bambance tsakanin ci gaba da fayilolin samarwa

A lokacin haɓakawa, ƙila za ku so duba canje-canjen lamba a ciki
ainihin lokaci. Don yin wannan, yawanci ƙarar tare da lambar tushe ana ɗora a ciki
akwati wanda ya ƙunshi lokacin aiki don aikace-aikacen ku. Amma don yanayin samarwa
Wannan hanyar ba ta dace ba.

A cikin samarwa, kuna da tari mai nodes da yawa, kuma ƙarar gida ce
dangane da kumburin da kwandon ku (ko sabis ɗin ku) ke gudana, don haka ba ku
zaka iya hawa lambar tushe ba tare da hadaddun ayyuka waɗanda suka haɗa da
aiki tare code, sigina, da sauransu.

Madadin haka, yawanci muna son ƙirƙirar hoto tare da takamaiman sigar lambar ku.
Yana da al'ada don yi masa alama tare da alamar da ta dace (zaka iya amfani da ma'anar fassarar
versioning ko wani tsarin da ka ga dama).

Gyaran Kanfigareshan

Ganin bambance-bambancen da kuma cewa abin dogaronku na iya bambanta a yanayi
haɓakawa da samarwa, a bayyane yake cewa za mu buƙaci fayilolin sanyi daban-daban.

Docker compose yana goyan bayan haɗa fayilolin rubutawa daban-daban zuwa
sami tsari na ƙarshe. Ana iya ganin yadda wannan ke aiki a cikin misali:

$ 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

Kamar yadda aka ce, docker composes yana goyan bayan haɗa nau'ikan waƙoƙi da yawa -
fayiloli, wannan yana ba ku damar soke sigogi daban-daban a cikin fayil na biyu. Misali:

$ 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

Wannan haɗin gwiwar bai dace sosai ba yayin haɓakawa, lokacin umarni
za a buƙaci a yi sau da yawa.

An yi sa'a, docker compose ta atomatik yana neman fayil na musamman da ake kira
docker-compose.override.yml don soke dabi'u docker-compose.yml. Idan
sake suna fayil na biyu, kuna samun sakamako iri ɗaya, kawai ta amfani da umarnin asali:

$ 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

To, wannan ya fi sauƙin tunawa.

Interpolation na Sauyawa

Tallafin fayilolin Kanfigareshan interpolation
masu canji
da dabi'u na asali. Wato, kuna iya yin waɗannan abubuwa:

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

Kuma idan kun yi docker-compose gini (ko tura) ba tare da canjin yanayi ba
$MY_SERVICE_VERSION, za a yi amfani da darajar latestamma idan kun saita
darajar canjin yanayi kafin ginin, za a yi amfani da shi lokacin gini ko turawa
zuwa rijista na sirri.rejista.mine.

Ka'idodina

Hanyoyin da ke aiki a gare ni na iya yin aiki a gare ku kuma. Ina bin waɗannan
dokoki masu sauki:

  • Duk tari na don samarwa, haɓakawa (ko wasu mahalli) an ayyana su ta hanyar
    docker - rubuta fayiloli
  • Fayilolin daidaitawa da ake buƙata don rufe duk mahalli na, gwargwadon yiwuwa
    kauce wa kwafi.
  • Ina buƙatar umarni mai sauƙi guda ɗaya don yin aiki a kowane yanayi.
  • An bayyana babban tsari a cikin fayil ɗin docker-compose.yml.
  • Ana amfani da masu canjin yanayi don ayyana alamun hoto ko wasu
    masu canji waɗanda za su iya bambanta daga yanayi zuwa yanayi (tsari, haɗin kai,
    samarwa).
  • Ana amfani da ƙimar masu canjin samarwa azaman ƙima don
    ta tsohuwa, wannan yana rage haɗarin idan an ƙaddamar da tari a samarwa ba tare da
    saita canjin yanayi.
  • Don fara sabis a cikin yanayin samarwa, yi amfani da umarnin docker stack deploy - shirya-file docker-compose.yml -with-registry-auth my-stack-name.
  • An fara yanayin aiki ta amfani da umarnin docker-tsara sama -d.

Bari mu kalli misali mai sauƙi.

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

Zan iya amfani docker-compose (docker-compose up)don gudanar da tari a ciki
yanayin ci gaba tare da saka lambar tushe a ciki /project/src.

Zan iya amfani da waɗannan fayiloli iri ɗaya a samarwa! Kuma tabbas zan iya amfani
guda fayil docker-compose.yml don shiryawa. Don fadada wannan zuwa
samarwa, Ina buƙatar kawai ginawa da aika hoton tare da alamar da aka riga aka ƙayyade
a cikin CI:

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

A cikin samarwa, ana iya gudanar da wannan ta amfani da umarni masu zuwa:

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

Kuma idan kuna son yin haka akan mataki, kawai kuna buƙatar ayyana
sauye-sauyen yanayi masu mahimmanci don aiki a cikin yanayin tsarawa:

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

A sakamakon haka, mun yi amfani da fayiloli daban-daban guda biyu na docker, waɗanda ba tare da
Ana iya amfani da kwafin saiti don kowane yanayi da kuke da shi!

Ƙara koyo game da kwas "Linux Administrator"

source: www.habr.com

Add a comment