Uguqulo loshicilelo lwepodcast olulungiselelwe kulindelo lokuqalisa kwekhosi
IDocker Compose sisixhobo esimangalisayo sokwenza umsebenzi
indawo engqongileyo yesipaki esisetyenziswe kwisicelo sakho. Ikuvumela ukuba uchaze
icandelo ngalinye lesicelo sakho, kulandela i-syntax ecacileyo nelula kwi
iifayile
Ngokufika kwe
iqela
Kodwa ngaba oku kuthetha ukuba ungasebenzisa i-docker efanayo-yenza ifayile kuyo
inkqubo yophuhliso nakwimeko yemveliso? Okanye sebenzisa ifayile efanayo kwi
iqonga? Ewe, ngokubanzi, ewe, kodwa kulo msebenzi sidinga oku kulandelayo:
- Uguqulo oluguquguqukayo: ukusetyenziswa kwezinto eziguquguqukayo zokusingqongileyo kwabanye
amaxabiso atshintshayo kwindawo nganye. - Configuration override: ukukwazi ukuchaza umzuzwana (okanye nayiphi na
enye ilandelayo) docker-qamba ifayile eya kutshintsha into malunga
okokuqala, kwaye i-docker compose iya kukhathalela ukudibanisa zombini iifayile.
Umahluko phakathi kweefayile zophuhliso kunye nemveliso
Ngexesha lophuhliso, uya kufuna ukujonga utshintsho lwekhowudi ngaphakathi
Ixesha elilungile. Ukwenza oku, ngokuqhelekileyo ivolumu enekhowudi yomthombo ifakwe kuyo
isikhongozeli esinexesha lokusebenza kwisicelo sakho. Kodwa kwimeko yemveliso
Le ndlela ayifanelekanga.
Kwimveliso, une-cluster enama-nodes amaninzi, kunye nomthamo wendawo
ngokunxulumene node apho isikhongozeli sakho (okanye inkonzo) sisebenza, ukuze ungenzi
unganyusa ikhowudi yemvelaphi ngaphandle kwemisebenzi enzima equka
ungqamaniso lwekhowudi, imiqondiso, njl.
Endaweni yoko, sihlala sifuna ukwenza umfanekiso ngoguqulelo oluthile lwekhowudi yakho.
Kuyinto yesiko ukuyiphawula ngethegi efanelekileyo (ungasebenzisa i-semantic
uguqulelo okanye enye inkqubo ngokubona kwakho).
Uqwalaselo Ugqithiselo
Ngenxa yokungafani kunye nokuba ukuxhomekeka kwakho kunokwahluka kwiimeko
uphuhliso kunye nemveliso, kuyacaca ukuba siya kufuna iifayile zoqwalaselo ezahlukeneyo.
Ukuqamba iDocker ixhasa ukudibanisa iifayile zokuqamba ezahlukeneyo kuzo
fumana uqwalaselo lokugqibela. Oku kusebenza njani kunokubonwa kumzekelo:
$ 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
Njengoko bekutshiwo, ukuqamba i-docker ixhasa ukudibanisa ukuqamba okuninzi -
iifayile, oku kukuvumela ukuba ubhale ngaphezulu kweeparamitha ezahlukeneyo kwifayile yesibini. Umzekelo:
$ 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
Le syntax ayilunganga kakhulu ngexesha lophuhliso, xa umyalelo
kuya kufuneka kwenziwe amaxesha amaninzi.
Ngethamsanqa, idocker iqamba ngokuzenzekelayo ijonge ifayile ekhethekileyo ebizwa
docker-compose.override.yml ukubhala ngaphezulu amaxabiso docker-compose.yml. ukuba
qamba kwakhona ifayile yesibini, ufumana isiphumo esifanayo, usebenzisa kuphela umyalelo wokuqala:
$ 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
Kulungile, kulula ukuyikhumbula.
Ukutolikwa kweeGuquguquko
Inkxaso yeefayile zoqwalaselo
ezahlukeneyo
services:
my-service:
build:
context: .
image: private.registry.mine/my-stack/my-service:${MY_SERVICE_VERSION:-latest}
...
Kwaye ukuba wenza docker-qamba ukwakha (okanye ukutyhala) ngaphandle kokuguquguquka kokusingqongileyo
$MY_SERVICE_VERSION, ixabiso liya kusetyenziswa zakutshanjekodwa ukuba uyaseta
ixabiso lemeko-bume eguquguqukayo phambi kolwakhiwo, iya kusetyenziswa xa kusakhiwa okanye kutyhalwa
kwirejista yabucala.registry.mine.
Imigaqo yam
Iindlela ezisebenzayo kum zinokukusebenzela nawe. Ndilandela ezi
imithetho elula:
- Zonke iimfumba zam zemveliso, uphuhliso (okanye ezinye iimeko) zichazwe
docker-qamba iifayile - Iifayile zoqwalaselo ezifunekayo ukugquma yonke imeko-bume yam, kangangoko kunokwenzeka
kuphephe ukuphindaphinda. - Ndifuna umyalelo omnye olula ukuze ndisebenze kwindawo nganye.
- Uqwalaselo oluphambili luchazwe kwifayile docker-compose.yml.
- Izinto eziguquguqukayo zokusingqongileyo zisetyenziselwa ukuchaza iithegi zemifanekiso okanye ezinye
izinto ezahlukeneyo ezinokwahluka ukusuka kokusingqongileyo ukuya kokusingqongileyo (iqonga, indibaniselwano,
imveliso). - Amaxabiso okuguquguquka kwemveliso asetyenziswa njengamaxabiso
ngokungagqibekanga, oku kunciphisa imingcipheko ukuba isitakhi siqaliswa kwimveliso ngaphandle
misela imo eguquguqukayo. - Ukuqala inkonzo kwindawo yemveliso, sebenzisa umyalelo docker stack deploy - qamba-ifayile docker-compose.yml -with-registry-auth my-stack-name.
- Indawo yokusebenza iqalwa ngokusebenzisa umyalelo docker-qalisa -d.
Makhe sijonge umzekelo olula.
# 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
...
Ndingasebenzisa docker-compose (docker-compose up)ukuqhuba istaki ngaphakathi
imowudi yophuhliso enekhowudi yemvelaphi efakwe ngaphakathi /iprojekthi/src.
Ndingasebenzisa ezi fayile ezifanayo kwimveliso! Kwaye ngokuqinisekileyo ndingayisebenzisa
ifayile efanayo docker-compose.yml yomdlalo. Ukwandisa oku
imveliso, ndifuna nje ukwakha kwaye ndithumele umfanekiso kunye nethegi echazwe kwangaphambili
kwinqanaba leCI:
export MY_SERVICE_VERSION=1.2.3
docker-compose -f docker-compose.yml build
docker-compose -f docker-compose.yml push
Kwimveliso, oku kungaqhutywa kusetyenziswa le miyalelo ilandelayo:
export MY_SERVICE_VERSION=1.2.3
docker stack deploy my-stack --compose-file docker-compose.yml --with-registry-auth
Kwaye ukuba ufuna ukwenza okufanayo eqongeni, kufuneka uchaze
izinto ezahlukeneyo zokusingqongileyo eziyimfuneko ekusebenzeni kwindawo yeqonga:
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
Ngenxa yoko, sisebenzise iifayile ezimbini ezahlukeneyo ze-docker, ngaphandle kwazo
Ulungelelwaniso oluphindwe kabini lunokusetyenziswa kuyo nayiphi na imeko-bume onayo!
Funda ngakumbi malunga nekhosi
umthombo: www.habr.com