Kumasulira kwa mawu a podcast okonzedwa poyembekezera kuyamba kwa maphunzirowa
Docker Compose ndi chida chodabwitsa chopangira ntchito
chilengedwe cha mulu wogwiritsidwa ntchito mu pulogalamu yanu. Zimakuthandizani kuti mufotokoze
Chigawo chilichonse cha pulogalamu yanu, kutsatira mawu omveka bwino komanso osavuta
mafayilo
Ndi kudza
gulu
Koma kodi izi zikutanthauza kuti mutha kugwiritsa ntchito fayilo ya docker-compose yomweyi
njira yachitukuko ndi m'malo opanga? Kapena gwiritsani ntchito fayilo yomweyi
siteji? Chabwino, zambiri, inde, koma kuti izi zitheke, tikufuna zotsatirazi:
- Kutanthauzira kosinthika: kugwiritsa ntchito zosintha zachilengedwe kwa ena
zomwe zimasintha m'malo aliwonse. - Kusintha kosinthika: Kutha kufotokozera sekondi (kapena iliyonse
wina wotsatira) docker-compose file yomwe ingasinthe china chake
choyamba, ndipo docker compose idzasamalira kuphatikiza mafayilo onse awiri.
Kusiyana pakati pa mafayilo opanga ndi kupanga
Pachitukuko, mungafune kuwona kusintha kwa ma code mkati
pompopompo. Kuti muchite izi, nthawi zambiri voliyumu yokhala ndi code source imayikidwamo
chotengera chomwe chili ndi nthawi yoyendetsera ntchito yanu. Koma kwa malo opanga
Njirayi si yoyenera.
Popanga, muli ndi masango okhala ndi mfundo zambiri, ndipo voliyumu yake ndi yapafupi
zokhudzana ndi mfundo yomwe chidebe chanu (kapena ntchito) chikugwira ntchito, kuti musatero
mutha kuyika ma code source popanda zovuta zomwe zikuphatikiza
kalunzanitsidwe kodi, zizindikiro, etc.
M'malo mwake, nthawi zambiri timafuna kupanga chithunzi chokhala ndi mtundu wina wake wa khodi yanu.
Ndi chizolowezi kuilemba ndi tag yoyenera (mutha kugwiritsa ntchito semantic
kusintha kapena dongosolo lina mwakufuna kwanu).
Kusintha Kosintha
Chifukwa cha kusiyana ndi kuti kudalira kwanu kungakhale kosiyana muzochitika
chitukuko ndi kupanga, zikuwonekeratu kuti tidzafunika mafayilo osinthika osiyanasiyana.
Docker compose imathandizira kuphatikiza mafayilo osiyanasiyana opangira
pezani kasinthidwe komaliza. Momwe izi zimagwirira ntchito zitha kuwoneka mu chitsanzo:
$ 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
Monga tanena, kupanga kwa docker kumathandizira kuphatikiza zolemba zingapo -
mafayilo, izi zimakupatsani mwayi wopitilira magawo osiyanasiyana mufayilo yachiwiri. Mwachitsanzo:
$ 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
Izi syntax si yabwino kwambiri pa chitukuko, pamene lamulo
ziyenera kuchitika nthawi zambiri.
Mwamwayi, docker compose imangoyang'ana fayilo yapadera yotchedwa
docker-compose.override.yml kunyalanyaza makhalidwe makina oyimba.yml. ngati
tchulaninso fayilo yachiwiri, mumapeza zotsatira zomwezo, pogwiritsa ntchito lamulo loyambirira:
$ 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
Chabwino, ndizosavuta kukumbukira.
Kutanthauzira kwa Zosintha
Kuthandizira mafayilo osintha
zosintha
services:
my-service:
build:
context: .
image: private.registry.mine/my-stack/my-service:${MY_SERVICE_VERSION:-latest}
...
Ndipo ngati mutero docker-compose build (kapena kukankha) popanda kusintha kwa chilengedwe
$MY_SERVICE_VERSION, mtengowo udzagwiritsidwa ntchito atsopanokoma ngati mukhala
mtengo wa kusintha kwa chilengedwe chisanayambe kumanga, chidzagwiritsidwa ntchito pomanga kapena kukankhira
ku register payekha.registry.mine.
Mfundo zanga
Njira zomwe zimagwira ntchito kwa ine zingagwire ntchito kwa inunso. Ndimatsatira izi
malamulo osavuta:
- Milu yanga yonse yopanga, chitukuko (kapena malo ena) amatanthauzidwa kudzera
docker-pangani mafayilo - Mafayilo osinthika amafunikira kubisa malo anga onse, momwe ndingathere
pewani kubwereza. - Ndikufuna lamulo limodzi losavuta kuti ndigwire ntchito pamalo aliwonse.
- Kukonzekera kwakukulu kumatanthauzidwa mu fayilo makina oyimba.yml.
- Zosintha zachilengedwe zimagwiritsidwa ntchito kutanthauzira ma tag azithunzi kapena zina
zosintha zomwe zimatha kusiyanasiyana kutengera chilengedwe (kuphatikiza, kuphatikiza,
kupanga). - Makhalidwe amitundu yopangira amagwiritsidwa ntchito ngati mtengo
mwachisawawa, izi zimachepetsa zoopsa ngati stack imayambitsidwa mukupanga popanda
khalani ndi kusintha kwa chilengedwe. - Kuti muyambe ntchito pamalo opangira, gwiritsani ntchito lamulo docker stack deploy - compose-file docker-compose.yml -with-registry-auth my-stack-name.
- Malo ogwirira ntchito amayamba kugwiritsa ntchito lamulo kuyimbira -d.
Tiyeni tione chitsanzo chosavuta.
# 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
...
Ndikhoza kugwiritsa ntchito docker-compose (docker-compose up)kuyendetsa stack mkati
njira yachitukuko yokhala ndi code source yoyikidwamo /project/src.
Nditha kugwiritsa ntchito mafayilo omwewa popanga! Ndipo ine ndikhoza ndithudi ntchito
fayilo yomweyi makina oyimba.yml za siteji. Kuti muwonjezere izi
kupanga, ndikungofunika kupanga ndi kutumiza chithunzicho ndi tag yofotokozedwatu
pa CI stage:
export MY_SERVICE_VERSION=1.2.3
docker-compose -f docker-compose.yml build
docker-compose -f docker-compose.yml push
Popanga, izi zitha kuyendetsedwa pogwiritsa ntchito malamulo awa:
export MY_SERVICE_VERSION=1.2.3
docker stack deploy my-stack --compose-file docker-compose.yml --with-registry-auth
Ndipo ngati mukufuna kuchita chimodzimodzi pa siteji, mumangofunika kufotokozera
Zosintha zofunikira zogwirira ntchito m'malo ochitira masewera:
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
Zotsatira zake, tidagwiritsa ntchito mafayilo awiri osiyana a docker-compose, omwe alibe
Zosintha zobwereza zitha kugwiritsidwa ntchito kumalo aliwonse omwe muli nawo!
Dziwani zambiri za maphunzirowa
Source: www.habr.com