Dhowrkii sano ee la soo dhaafay, warshadaha horumarinta software-ku waxa ay maraan isbedel muuqda. Mid ka mid ah ifafaalahan ayaa loo aqoonsan karaa inay tahay xiisaha sii kordhaya ee fikradda adeegyada yaryar. In kasta oo adeeg-yartu aanay ahayn tignoolajiyada ugu cusub, haddana dhawaan uun caannimadeeda ayaa cirka isku shareertay.
Adeegyo waaweyn oo keli keli ah ayaa hadda lagu beddelay adeegyo yaryar oo madaxbannaan oo madaxbannaan. Adeegga yar-yar waxaa loo malayn karaa inuu yahay codsi u adeega hal ujeedo oo gaar ah. Tusaale ahaan, waxay noqon kartaa DBMS xidhiidhsan, codsi Express, adeeg Solr.
Maalmahan, way adag tahay in la qiyaaso horumarinta nidaamka software cusub iyada oo aan la isticmaalin adeeg-yaraha. Xaaladdan, markeeda, waxay nagu hogaaminaysaa goobta Docker.
Docker
Platform
Qodobbada
Engineering
Markaad la shaqaynayso Docker Compose, faylka YAML waxaa loo isticmaalaa in lagu habeeyo adeegyada codsiga iyo habaynta isdhexgalka midba midka kale. Docker Compose waa qalab lagu sifeeyo laguna socodsiiyo codsiyada Docker-ka weelasha badan.
Laba weel oo ku shaqeeya nidaamka martida loo yahay
GNU Samee
Barnaamijka make
, Asal ahaan waa aalad si otomaatig ah loogu dhisayo barnaamijyada iyo maktabadaha laga soo bilaabo koodhka isha. Guud ahaan, waxaan dhihi karnaa taas make
waxay khusaysaa nidaam kasta oo ku lug leh fulinta amarada aan sabab lahayn si loogu beddelo qaar ka mid ah agabka wax-soo-saarka qaar ka mid ah qaab wax-soo-saarka, oo loo beddelo yool. Xaaladeena, amarrada docker-compose
waxa loo bedeli doonaa yoolal aan la taaban karin (
Si aad u sheegto barnaamijka make
Wixii aan ka rabno, waxaan u baahanahay fayl Makefile
.
Inaga Makefile
waxaa ku jiri doona amarro joogto ah docker
ΠΈ docker-compose
, kuwaas oo loogu talagalay in lagu xalliyo dhibaatooyin badan. Sida, waxaan ka hadleynaa ururinta weelka, in la bilaabo, joojinta, dib u bilaabida, ku saabsan habeynta user login ee weelka, ku shaqeynta qoryaha weelka, iyo xallinta dhibaatooyinka kale ee la midka ah.
Kiisaska Isticmaalka Caadiga ah ee Buuxinta Docker
Aynu qiyaasno arji shabakadeed caadi ah oo leh qaybaha soo socda:
- Xogta TimecaleDB (Postgres).
- Codsiga Express.js.
- Ping (kaliya weel, ma sameeyo wax gaar ah).
Codsigan wuxuu u baahan doonaa 3 weel oo Docker ah iyo fayl docker-compose
, kaas oo ka kooban tilmaamo lagu maamulayo weelashaas. Weel kastaa wuxuu yeelan doonaa meelo la taaban karo oo kala duwan. Tusaale ahaan, weel leh timescale
waxa suurto gal noqon doona in ay u shaqeeyaan ku dhawaad ββsi la mid ah sida ay ula shaqeeyaan database-yada. Magac ahaan, waxay kuu ogolaaneysaa inaad sameyso ficilada soo socda:
- Gelida qolofka Postgres
- Soo dejinta iyo dhoofinta miisaska.
- abuuridda
pg_dump
miisaska ama database-yada.
Express.js weelka codsiga, expressjs
, waxa uu yeelan karaa awoodaha soo socda:
- Bixinta xog cusub oo ka timid log-ka nidaamka
- Soo gal qolofka si aad ufuliso amarrada qaarkood.
La falgalka Konteenarada
Marka aan dejinno xiriirka ka dhexeeya weelasha anagoo adeegsanayna Docker Compose, waa waqtigii lala xiriiri lahaa weelashaas. Gudaha nidaamka 'Docker Compose' waxaa jira amar docker-compose
, doorashada taageerada -f
, kaas oo kuu ogolaanaya inaad ku wareejiso faylka nidaamka docker-compose.yml
.
Adigoo isticmaalaya awoodaha doorashadan, waxaad xaddidi kartaa isdhexgalka nidaamka oo keliya weelasha lagu sheegay faylka docker-compose.yml
.
Aynu eegno sida isdhexgalka weelasha ay u egyihiin marka la isticmaalayo amarrada docker-compose
. Haddii aan qiyaasno inaan u baahanahay inaan galno qolofka psql
, markaas amarada u dhigma waxay u ekaan karaan sidan:
docker-compose -f docker-compose.yml exec timescale psql -Upostgres
Isla amarka aan loo isticmaalin fulinta docker-compose
iyo docker
, waxay u ekaan kartaa sidan:
docker exec -it edp_timescale_1 psql -Upostgres
Fadlan la soco in xaaladahan oo kale ay had iyo jeer door bidaan in la isticmaalo amarka docker
, iyo amarka docker-compose
, maadaama ay tani meesha ka saarayso baahida loo qabo in la xasuusto magacyada weelka.
Labada amar ee kor ku xusan maaha kuwo aad u adag. Laakin haddii aan u isticmaalno "duubo" qaabka Makefile
, kaas oo na siin doona interface qaab amarro fudud oo laftiisa u yeeri doona amarro dhaadheer oo la mid ah, ka dibna natiijooyin isku mid ah ayaa lagu gaari karaa sidan:
make db-shell
Waa wax iska cad in la isticmaalo Makefile
waxay ka dhigaysa ku shaqaynta weelasha aad u fudud!
Tusaalaha shaqada
Iyada oo ku saleysan jaantuska mashruuca sare, waxaan abuuri doonaa faylka soo socda 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
Si loo maareeyo qaabka Docker Compose oo loola falgalo weelasha uu qeexayo, waxaan abuuri doonaa faylka soo socda 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
Inta badan amarada halkan lagu sifeeyay waxay khuseeyaan dhammaan weelasha, laakiin iyadoo la isticmaalayo ikhtiyaarka c=
wuxuu kuu ogolaanayaa inaad xaddido baaxadda amarka hal weel.
Kadib Makefile
diyaar, waxaad u isticmaali kartaa sidan:
make help
- soo saarista liiska dhammaan amarrada diyaarsanmake
.
Ka caawi amarrada la heli karo
make build
- ururinta sawir kaDockerfile
. Tusaalahayaga waxaan isticmaalnay sawirro jiratimescale
ΠΈping
. Laakin sawirkaapi
waxaan rabnaa inaan ku aruurinno gudaha. Tani waa dhab ahaan waxa la samayn doono ka dib fulinta amarkan.
Dhisida weelka Docker
make start
- bilaabista dhammaan weelasha. Si aad u bilowdo hal weel, waxaad isticmaali kartaa amar sidamake start c=timescale
.
Ku socodsiinta weelka wakhtiga
Ku socodsiinta weelka ping
make login-timescale
- gal fadhiga bash ee weelkatimescale
.
Ku ordaya bash weel waqti go'an ah
make db-shell
- gelitaankapsql
weel ku jiratimescale
si loo fuliyo su'aalaha SQL ee lidka ku ah xogta.
Ku socodsiinta psql weel waqti la cabiray
make stop
- weelasha joojinta.
Joojinta weelka wakhtiga
make down
- joojinta iyo qaadista weelasha. Si aad meesha uga saarto weel gaar ah, waxaad isticmaali kartaa amarkan tilmaamaya weelka aad rabto. Tusaale ahaan -make down c=timescale
amamake down c=api
.
Joojinta iyo tirtirida dhammaan weelasha
Natiijooyinka
In kasta oo Docker Compose uu ina siinayo amarro qani ah oo lagu maareynayo weelasha, mararka qaarkood amarradani waxay noqon karaan kuwo dheer oo ay adagtahay in la xasuusto.
Habka isticmaalka Makefile
waxay naga caawisay samaynta is dhexgalka degdega ah oo fudud ee weelasha laga soo qaaday faylka docker-compose.yml
. Magac ahaan, waxaan ka hadlaynaa kuwan soo socda:
- Horumariyuhu waxa uu la falgalaa oo kaliya weelasha mashruuca ee lagu sharaxay
docker-compose.yml
, shaqada laguma farageliyo weelasha kale ee socda. - Haddii ay dhacdo in amar gaar ah la iloobo, waxaad fulin kartaa amarka
make help
caawimona ka hel amarrada la heli karo. - Uma baahnid inaad xasuusato liisaska dheer ee doodaha si aad u qabato ficilada ay ka midka yihiin helitaanka qoraaladii ugu dambeeyay ama gelida nidaamka. Tusaale ahaan, amar sida
docker-compose -f docker-compose.yml exec timescale psql -Upostgres
isbedelamake db-shell
. - file
Makefile
Waxaad si dabacsan ula qabsan kartaa marka uu mashruucu kordho. Tusaale ahaan, way fududahay in lagu daro amar si loo abuuro kayd kayd ah ama la sameeyo ficil kasta oo kale. - Haddii koox weyn oo horumariyayaashu isticmaalaan isla isku mid ah
Makefile
, tani waxay hagaajinaysaa wada shaqaynta waxayna yaraynaysaa khaladaadka.
PS Inaga
Akhristayaasha sharafta leh! Sideed otomaatig ugu samaysaa Docker Compose?
Source: www.habr.com