Gach cúpla bliain, téann an tionscal forbartha bogearraí faoi athrú paradigm. Is féidir ceann de na feiniméin seo a aithint mar an spéis mhéadaitheach i gcoincheap na micrisheirbhísí. Cé nach iad na microservices an teicneolaíocht is nuaí, is le déanaí a tháinig méadú mór ar an éileamh atá air.
Tá micreasheirbhísí neamhspleácha uathrialacha á gcur in ionad seirbhísí móra monailiteacha anois. Is féidir smaoineamh ar mhicrisheirbhís mar fheidhmchlár a fhreastalaíonn ar chuspóir amháin agus an-sonrach. Mar shampla, d’fhéadfadh sé a bheith ina DBMS coibhneasta, ina fheidhmchlár Express, ina sheirbhís Solr.
Na laethanta seo, tá sé deacair a shamhlú go bhforbrófar córas bogearraí nua gan úsáid a bhaint as microservices. Agus tugann an staid seo, ina dhiaidh sin, sinn chuig ardán Docker.
dhugaire
Ardán
Comhdháil Docker
Технология
Agus iad ag obair le Docker Compose, úsáidtear comhad YAML chun seirbhísí feidhmchláir a chumrú agus a n-idirghníomhú lena chéile a eagrú. Dá bhrí sin is uirlis é Docker Compose chun cur síos a dhéanamh agus feidhmchláir il-choimeádáin Docker a rith.
Dhá choimeádán ag rith ar chóras óstach
GNU Déan
Clár make
, go bunúsach is uirlis é chun tógáil clár agus leabharlann ó chód foinseach a uathoibriú. Go ginearálta, is féidir linn a rá go bhfuil make
baineann sé le haon phróiseas lena mbaineann orduithe treallacha a fhorghníomhú chun roinnt ábhar ionchuir a athrú go foirm aschuir éigin, chuig sprioc éigin. Is é ár gcás, na horduithe docker-compose
a chlaochlú go spriocanna teibí (
Chun an clár a insint make
faoi cad ba mhaith linn as é, ní mór dúinn comhad Makefile
.
Inár Makefile
beidh orduithe rialta ann docker
и docker-compose
, atá deartha chun go leor fadhbanna a réiteach. Is é sin, táimid ag caint faoi choimeádán a chur le chéile, faoi é a thosú, é a stopadh, é a atosú, logáil isteach úsáideora a eagrú don choimeádán, faoi oibriú le logaí coimeádáin, agus faoi fhadhbanna eile dá samhail a réiteach.
Cásanna Úsáide tipiciúla le haghaidh Cumadóireachta Dugairí
Samhlóimid feidhmchlár gréasáin rialta a bhfuil na comhpháirteanna seo a leanas aige:
- Bunachar sonraí TimescaleDB (Postgres).
- Feidhmchlár Express.js.
- Ní dhéanann ping (ach coimeádán, aon rud speisialta).
Beidh 3 choimeádán Docker agus comhad ag teastáil ón bhfeidhmchlár seo docker-compose
, ina bhfuil treoracha chun na coimeádáin seo a bhainistiú. Beidh pointí tadhaill éagsúla ag gach coimeádán. Mar shampla, le coimeádán timescale
beifear in ann oibriú thart ar an mbealach céanna agus a oibríonn siad le bunachair shonraí. Is é sin, ligeann sé duit na gníomhartha seo a leanas a dhéanamh:
- Logáil isteach sa bhlaosc Postgres.
- Iompórtáil agus onnmhairiú táblaí.
- chruthú
pg_dump
táblaí nó bunachair shonraí.
Coimeádán feidhmchláir Express.js, expressjs
, féadfaidh na cumais seo a leanas a bheith aige:
- Sonraí úra a sholáthar ó loga an chórais.
- Logáil isteach sa bhlaosc chun orduithe áirithe a fhorghníomhú.
Idirghníomhú le Coimeádáin
Nuair a bheidh cumarsáid curtha ar bun againn idir coimeádáin ag baint úsáide as Docker Compose, tá sé in am cumarsáid a dhéanamh leis na coimeádáin sin. Laistigh den chóras Docker Compose tá ordú docker-compose
, rogha tacaíochta -f
, a ligeann duit comhad a aistriú chuig an gcóras docker-compose.yml
.
Ag baint úsáide as cumais an rogha seo, is féidir leat idirghníomhú leis an gcóras a theorannú ach amháin do na coimeádáin a luaitear sa chomhad docker-compose.yml
.
Breathnaímid ar an gcuma atá ar idirghníomhú le coimeádáin agus orduithe á n-úsáid docker-compose
. Má shamhlaímid go gcaithfimid logáil isteach sa bhlaosc psql
, ansin d'fhéadfadh go mbeadh cuma mar seo ar na horduithe comhfhreagracha:
docker-compose -f docker-compose.yml exec timescale psql -Upostgres
An t-ordú céanna nach n-úsáidtear a fhorghníomhú docker-compose
Agus docker
, b'fhéidir go mbeadh cuma mar seo:
docker exec -it edp_timescale_1 psql -Upostgres
Tabhair faoi deara le do thoil gur fearr i gcónaí an t-ordú a úsáid i gcásanna den sórt sin docker
, agus an fhoireann docker-compose
, toisc go gcuireann sé seo deireadh leis an ngá atá le cuimhneamh ar ainmneacha coimeádán.
Níl an dá ordú thuas chomh deacair sin. Ach dá mba rud é gur úsáideamar “fillteán” san fhoirm Makefile
, a thabharfadh comhéadan dúinn i bhfoirm orduithe simplí agus a thabharfadh féin orduithe fada comhchosúla, ansin d'fhéadfaí na torthaí céanna a bhaint amach mar seo:
make db-shell
Tá sé soiléir go leor go bhfuil an úsáid Makefile
déanann sé i bhfad níos éasca oibriú le coimeádáin!
Sampla oibre
Bunaithe ar an léaráid tionscadail thuas, cruthóimid an comhad seo a leanas 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
Chun cumraíocht Docker Compose a bhainistiú agus idirghníomhú leis na coimeádáin a ndéanann sé cur síos orthu, cruthóimid an comhad seo a leanas 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
Baineann an chuid is mó de na horduithe a thuairiscítear anseo le gach coimeádán, ach ag baint úsáide as an rogha c=
is féidir leat raon feidhme an ordaithe a theorannú go coimeádán amháin.
Tar éis Makefile
réidh, is féidir leat é a úsáid mar seo:
make help
— liosta de na horduithe go léir atá ar fáil a eisiúintmake
.
Cabhair maidir le horduithe atá ar fáil
make build
- íomhá a chur le chéile óDockerfile
. Inár sampla d’úsáideamar íomhánna a bhí ann cheana féintimescale
иping
. Ach an íomháapi
ba mhaith linn a bhailiú go háitiúil. Is é seo go díreach cad a dhéanfar tar éis an t-ordú seo a fhorghníomhú.
Tógáil coimeádán Docker
make start
— gach coimeádán a sheoladh. Chun coimeádán amháin a sheoladh, is féidir leat ordú marmake start c=timescale
.
Rith an coimeádán scála ama
Coimeádán ping a rith
make login-timescale
— logáil isteach chuig seisiún bash an choimeádáintimescale
.
Rith bash i gcoimeádán scála ama
make db-shell
- bealach isteach chuigpsql
i gcoimeádántimescale
chun fiosrúcháin SQL a fhorghníomhú i gcoinne an bhunachair sonraí.
Rith psql i gcoimeádán amscála
make stop
— coimeádáin a stopadh.
Coimeádán scála ama a stopadh
make down
— coimeádáin a stopadh agus a bhaint. Chun coimeádán ar leith a bhaint, is féidir leat an t-ordú seo a úsáid lena sonraítear an coimeádán atá uait. Mar shampla -make down c=timescale
nómake down c=api
.
Gach coimeádán a stopadh agus a scriosadh
Torthaí
Cé go dtugann Docker Compose sraith saibhir orduithe dúinn chun coimeádáin a bhainistiú, uaireanta is féidir leis na horduithe seo a bheith fada agus deacair a mheabhrú.
Modh úsáide Makefile
chabhraigh sé linn idirghníomhú tapa agus éasca a bhunú le coimeádáin ó chomhad docker-compose.yml
. Eadhon, táimid ag caint faoi na nithe seo a leanas:
- Ní idirghníomhaíonn an forbróir ach leis na coimeádáin tionscadail a thuairiscítear i
docker-compose.yml
, ní chuireann coimeádáin reatha eile isteach ar an obair. - Sa chás go ndéantar dearmad ar ordú áirithe, is féidir leat an t-ordú a fhorghníomhú
make help
agus cabhair a fháil ar orduithe atá ar fáil. - Ní gá duit cuimhneamh ar liostaí fada argóintí chun gníomhartha a dhéanamh mar na hiontrálacha logála is déanaí a fháil nó logáil isteach i gcóras. Mar shampla, ordú cosúil le
docker-compose -f docker-compose.yml exec timescale psql -Upostgres
casadh isteachmake db-shell
. - comhad
Makefile
Is féidir leat a chur in oiriúint go solúbtha dó de réir mar a fhásann an tionscadal. Mar shampla, tá sé éasca ordú a chur leis chun cúltaca bunachar sonraí a chruthú nó aon ghníomh eile a dhéanamh. - Má úsáideann foireann mhór forbróirí mar an gcéanna
Makefile
, déanann sé seo comhar a chuíchóiriú agus laghdaítear earráidí.
PS Inár
Léitheoirí a chara! Conas a dhéanann tú Docker Compose a uathoibriú?
Foinse: will.com