Rhoqo kwiminyaka embalwa, ishishini lophuhliso lwesoftware lifumana utshintsho lweparadigm. Esinye sezi ziganeko sinokuqatshelwa njengokukhula komdla kwingqikelelo yee-microservices. Nangona i-microservices ingeyiyo itekhnoloji entsha, kutsha nje ukuthandwa kwayo kuye kwanda.
Iinkonzo ezinkulu ze-monolithic ngoku zithathelwa indawo yi-microservices ezizimeleyo, ezizimeleyo. I-microservice inokucingelwa njengesicelo esisebenza injongo enye kunye necacileyo. Ngokomzekelo, inokuba yi-DBMS yobudlelwane, isicelo se-Express, inkonzo ye-Solr.
Kule mihla, kunzima ukucinga ukuphuhlisa inkqubo entsha yesoftware ngaphandle kokusebenzisa ii-microservices. Kwaye le meko, ngokulandelayo, isikhokelela kwiqonga leDocker.
Docker
Platform
Docker Ukubhala
Te knoloji
Xa usebenza kunye neDocker Compose, ifayile ye-YAML isetyenziselwa ukuqwalasela iinkonzo zesicelo kunye nokucwangcisa intsebenziswano yabo enye kwenye. I-Docker Compose ke ngoko sisixhobo sokuchaza kunye nokuqhuba usetyenziso lwe-Docker enezikhongozeli ezininzi.
Izikhongozeli ezibini ezisebenza kwi-host system
I-GNU Yenza
Inkqubo make
, sisixhobo sokwenza ngokuzenzekelayo ukwakhiwa kweenkqubo kunye namathala eencwadi ukusuka kwikhowudi yomthombo. Ngokubanzi, sinokuthi make
isebenza kuyo nayiphi na inkqubo ebandakanya ukuphumeza imiyalelo engafanelekanga ukuguqula imathiriyeli yegalelo kwifomu yemveliso ethile, kwiinjongo ezithile. Kwimeko yethu, imiyalelo docker-compose
iya kuguqulelwa kwiinjongo ezingabonakaliyo (
Ukuxelela inkqubo make
malunga nento esiyifunayo kuyo, sifuna ifayile Makefile
.
Kwiphepha lethu Makefile
iya kuba nemiyalelo eqhelekileyo docker
ΠΈ docker-compose
, eziyilelwe ukusombulula iingxaki ezininzi. Oko kukuthi, sithetha malunga nokudibanisa isitya, malunga nokusiqala, ukusimisa, ukuyiqala kwakhona, malunga nokulungelelanisa ukungena komsebenzisi kwisikhongozeli, malunga nokusebenza kunye nezigodo zesikhongozeli, kunye nokusombulula ezinye iingxaki ezifanayo.
Amatyala osetyenziso oluqhelekileyo lweDocker Compose
Makhe sibe nomfanekiso wesicelo sewebhu esiqhelekileyo esinamacandelo alandelayo:
- Idatabase ye-TimescaleDB (iPostgres).
- Express.js isicelo.
- I-Ping (isitya nje, ayenzi nto ekhethekileyo).
Esi sicelo siya kufuna izitya ezi-3 zeDocker kunye nefayile docker-compose
, equlethe imiyalelo yokulawula ezi zikhongozeli. Isikhongozeli ngasinye siya kuba neendawo zokucofa ezahlukeneyo. Umzekelo, kunye nesitya timescale
kuyakwenzeka ukusebenza malunga nendlela efanayo njengoko besebenza ngoovimba beenkcukacha. Oko kukuthi, ikuvumela ukuba wenze ezi ntshukumo zilandelayo:
- Ukungena kwiqokobhe lePostgres.
- Ukungenisa kunye nokuthumela ngaphandle kweetafile.
- Indalo
pg_dump
iitafile okanye oovimba beenkcukacha.
Express.js isicelo isikhongozeli, expressjs
, inokuba nobu buchule bulandelayo:
- Ukubonelela ngedatha entsha evela kwilog yesistim.
- Ngena kwiqokobhe ukwenza imiyalelo ethile.
Ukusebenzisana neMigqomo
Nje ukuba simise unxibelelwano phakathi kwezikhongozeli zisebenzisa iDocker Compose, lixesha lokunxibelelana nezo zikhongozeli. Ngaphakathi kwenkqubo yeDocker Compose kukho umyalelo docker-compose
, ukhetho oluxhasayo -f
, ekuvumela ukuba uthumele ifayile kwisixokelelwano docker-compose.yml
.
Usebenzisa amandla olu khetho, unganciphisa unxibelelwano nenkqubo kuphela kwezo zikhongozeli zikhankanywe kwifayile. docker-compose.yml
.
Makhe sijonge ukuba ukunxibelelana nezikhongozeli kujongeka njani xa usebenzisa imiyalelo docker-compose
. Ukuba sicinga ukuba kufuneka singene kwiqokobhe psql
, emva koko imiyalelo ehambelanayo inokujongeka ngolu hlobo:
docker-compose -f docker-compose.yml exec timescale psql -Upostgres
Umyalelo ofanayo ongasetyenziswanga ukuphumeza docker-compose
, kwaye docker
, inokubonakala ngolu hlobo:
docker exec -it edp_timescale_1 psql -Upostgres
Nceda uqaphele ukuba kwiimeko ezinjalo kusoloko kukhethwa ukusebenzisa umyalelo docker
, kunye neqela docker-compose
, njengoko oku kuphelisa imfuno yokukhumbula amagama wezikhongozeli.
Yomibini le miyalelo ingasentla ayinzima kangako. Kodwa ukuba sisebenzise "i-wrapper" kwifom Makefile
, eya kuthi isinike ujongano ngendlela yemiyalelo elula kwaye yona ngokwayo ibize imiyalelo emide efanayo, ngoko iziphumo ezifanayo zinokufumaneka ngolu hlobo:
make db-shell
Kucacile ukuba ukusetyenziswa Makefile
yenza ukusebenza ngezikhongozeli kube lula!
Umzekelo osebenzayo
Ngokusekelwe kwidayagram yeprojekthi engentla, siya kudala le fayile ilandelayo docker-compose.yml
:
version: '3.3'
services:
api:
build: .
image: mywebimage:0.0.1
ports:
- 8080:8080
volumes:
- /app/node_modules/
depends_on:
- timescale
command: npm run dev
networks:
- webappnetwork
timescale:
image: timescale/timescaledb-postgis:latest-pg11
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
command: ["postgres", "-c", "log_statement=all", "-c", "log_destination=stderr"]
volumes:
- ./create_schema.sql:/docker-entrypoint-initdb.d/create_schema.sql
networks:
- webappnetwork
ping:
image: willfarrell/ping
environment:
HOSTNAME: "localhost"
TIMEOUT: 300
networks:
webappnetwork:
driver: bridge
Ukulawula i-Docker Compose uqwalaselo kunye nokusebenzisana nezikhongozeli ezichazayo, siya kudala le fayile ilandelayo Makefile
:
THIS_FILE := $(lastword $(MAKEFILE_LIST))
.PHONY: help build up start down destroy stop restart logs logs-api ps login-timescale login-api db-shell
help:
make -pRrq -f $(THIS_FILE) : 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | sort | egrep -v -e '^[^[:alnum:]]' -e '^$@$$'
build:
docker-compose -f docker-compose.yml build $(c)
up:
docker-compose -f docker-compose.yml up -d $(c)
start:
docker-compose -f docker-compose.yml start $(c)
down:
docker-compose -f docker-compose.yml down $(c)
destroy:
docker-compose -f docker-compose.yml down -v $(c)
stop:
docker-compose -f docker-compose.yml stop $(c)
restart:
docker-compose -f docker-compose.yml stop $(c)
docker-compose -f docker-compose.yml up -d $(c)
logs:
docker-compose -f docker-compose.yml logs --tail=100 -f $(c)
logs-api:
docker-compose -f docker-compose.yml logs --tail=100 -f api
ps:
docker-compose -f docker-compose.yml ps
login-timescale:
docker-compose -f docker-compose.yml exec timescale /bin/bash
login-api:
docker-compose -f docker-compose.yml exec api /bin/bash
db-shell:
docker-compose -f docker-compose.yml exec timescale psql -Upostgres
Uninzi lwemiyalelo echazwe apha isebenza kuzo zonke izikhongozeli, kodwa usebenzisa ukhetho c=
ikuvumela ukuba unciphise umda womyalelo kwisikhongozeli esinye.
Emva Makefile
ilungile, ungayisebenzisa ngolu hlobo:
make help
β ekhupha uluhlu lwayo yonke imiyalelo ekhoyomake
.
Uncedo kwimiyalelo ekhoyo
make build
- ukudibanisa umfanekiso ukusukaDockerfile
. Kumzekelo wethu sasebenzisa imifanekiso ekhoyotimescale
ΠΈping
. Kodwa umfanekisoapi
sifuna ukuqokelela ekuhlaleni. Yiloo nto kanye eya kwenziwa emva kokuphumeza lo myalelo.
Ukwakha isikhongozeli seDocker
make start
- ukusungula zonke izitya. Ukuphehlelela nje isikhongozeli esinye, ungasebenzisa umyalelo onjemake start c=timescale
.
Ukuqhuba isikhongozeli sexesha
Ukuqhuba isitya se-ping
make login-timescale
-ngena kwiseshini ye-bash yesikhongozelitimescale
.
Ukubaleka i-bash kwisitya se-timescale
make db-shell
- yokungenapsql
kwisikhongozelitimescale
ukwenza imibuzo yeSQL ngokuchasene nesiseko sedata.
Ukuqhuba i-psql kwisitya se-timescaledb
make stop
- izikhongozeli zokumisa.
Ukumisa isikhongozeli sexesha
make down
β ukumisa nokususa izitya. Ukususa isikhongozeli esithile, ungasebenzisa lo myalelo uchaza isikhongozeli esifunekayo. Umzekelo -make down c=timescale
okanyemake down c=api
.
Ukumisa kunye nokucima zonke izitya
Iziphumo
Nangona iDocker Compose isinika iseti etyebileyo yemiyalelo yokulawula izikhongozeli, ngamanye amaxesha le miyalelo inokuba mide kwaye kube nzima ukuyikhumbula.
Indlela yokusetyenziswa Makefile
Isincedile ukuseka unxibelelwano olukhawulezayo nolulula kunye nezikhongozeli ezivela kwifayile docker-compose.yml
. Oko kukuthi, sithetha ngoku kulandelayo:
- Umphuhlisi usebenzisana kuphela nezikhongozeli zeprojekthi ezichazwe kuyo
docker-compose.yml
, umsebenzi awuphazanyiswa zezinye izikhongozeli ezibalekayo. - Kwimeko apho umyalelo othile ulibele, ungenza umyalelo
make help
kwaye ufumane uncedo kwimiyalelo ekhoyo. - Awudingi ukukhumbula uluhlu olude lweengxoxo ukwenza iintshukumo ezinjengokufumana amangeno elog yamva nje okanye ukungena kwinkqubo. Umzekelo, umyalelo ofana
docker-compose -f docker-compose.yml exec timescale psql -Upostgres
Ijika ibemake db-shell
. - Ifayile
Makefile
Unokuziqhelanisa ngokuguquguqukayo kuyo njengoko iprojekthi ikhula. Umzekelo, kulula ukongeza umyalelo wokwenza ugcino lwedatha okanye wenze nasiphi na esinye isenzo. - Ukuba iqela elikhulu labaphuhlisi lisebenzisa okufanayo
Makefile
, oku kulungelelanisa intsebenziswano kunye nokunciphisa iimpazamo.
PS Kwiphepha lethu
Bafundi abathandekayo! Uyenza njani iDocker Compose?
umthombo: www.habr.com