A h-uile beagan bhliadhnaichean, bidh an gnìomhachas leasachadh bathar-bog a’ dol tro atharrachadh paradigm. Faodar aon de na h-uinneanan sin aithneachadh mar an ùidh a tha a’ sìor fhàs ann am bun-bheachd microservices. Ged nach e microservices an teicneòlas as ùire, is ann dìreach o chionn ghoirid a tha fèill mhòr air.
Tha meanbh-sheirbheisean neo-eisimeileach, neo-eisimeileach a-nis gan cur an àite seirbheisean mòra monolithic. Faodar smaoineachadh air microservice mar thagradh a tha a’ frithealadh aon adhbhar sònraichte. Mar eisimpleir, dh’ fhaodadh gur e DBMS dàimheach a th’ ann, tagradh Express, seirbheis Solr.
An-diugh, tha e duilich smaoineachadh air siostam bathar-bog ùr a leasachadh gun a bhith a’ cleachdadh microservices. Agus tha an suidheachadh seo, an uair sin, gar toirt gu àrd-ùrlar Docker.
Docker
Platform
Companaidh Docker
Teicneòlas
Nuair a bhios tu ag obair le Docker Compose, thèid faidhle YAML a chleachdadh gus seirbheisean tagraidh a rèiteachadh agus an eadar-obrachadh le chèile a chuir air dòigh. Mar sin tha Docker Compose na inneal airson cunntas a thoirt air agus ruith thagraidhean Docker ioma-ghlainne.
Dà shoitheach a’ ruith air siostam aoigheachd
Dèan GNU
Am prògram make
, gu bunaiteach na inneal airson togail phrògraman agus leabharlannan gu fèin-ghluasadach bho chòd stòr. San fharsaingeachd, faodaidh sinn sin a ràdh make
a’ buntainn ri pròiseas sam bith a tha a’ toirt a-steach a bhith a’ cur an gnìomh òrdughan neo-riaghailteach gus cuid de stuthan cuir a-steach atharrachadh gu cruth toraidh air choreigin, gu amas air choireigin. Anns a 'chùis againn, na h-òrdughan docker-compose
thèid an atharrachadh gu amasan eas-chruthach (
A innse am prògram make
mu na tha sinn ag iarraidh bhuaithe, feumaidh sinn faidhle Makefile
.
Anns ar Makefile
bidh òrdughan cunbhalach ann docker
и docker-compose
, a tha air an dealbhadh gus fuasgladh fhaighinn air mòran dhuilgheadasan. Is e sin, tha sinn a 'bruidhinn mu bhith a' cruinneachadh soitheach, mu bhith ga thòiseachadh, ga stad, ga ath-thòiseachadh, mu bhith ag eagrachadh logadh a-steach don ghobhar, mu bhith ag obair le logaichean soitheach, agus mu bhith a 'fuasgladh dhuilgheadasan eile.
Cùisean cleachdaidh àbhaisteach airson Docker Compose
Smaoinichidh sinn air tagradh lìn cunbhalach anns a bheil na pàirtean a leanas:
- Stòr-dàta TimescaleDB (Postgres).
- Iarrtas Express.js.
- Chan eil ping (dìreach soitheach, a 'dèanamh dad sònraichte).
Feumaidh an tagradh seo 3 soithichean Docker agus faidhle docker-compose
, anns a bheil stiùireadh airson na soithichean sin a riaghladh. Bidh puingean suathaidh eadar-dhealaichte aig gach soitheach. Mar eisimpleir, le container timescale
bidh e comasach obrachadh timcheall air an aon dòigh ’s a bhios iad ag obair le stòran-dàta. Is e sin, leigidh e leat na gnìomhan a leanas a choileanadh:
- Log a-steach do shlige Postgres.
- In-mhalairt agus às-mhalairt chlàran.
- cruthachadh
pg_dump
clàran no stòran-dàta.
Inneal tagraidh Express.js, expressjs
, faodaidh na comasan a leanas a bhith aca:
- A 'toirt seachad dàta ùr bho log an t-siostam.
- Log a-steach don t-slige gus òrdughan sònraichte a chuir an gnìomh.
Eadar-obrachadh le Containers
Aon uair ‘s gu bheil sinn air conaltradh a stèidheachadh eadar soithichean a’ cleachdadh Docker Compose, tha an t-àm ann conaltradh leis na soithichean sin. Taobh a-staigh siostam Docker Compose tha òrdugh docker-compose
, roghainn taic -f
, a leigeas leat faidhle a ghluasad chun t-siostam docker-compose.yml
.
A 'cleachdadh comasan an roghainn seo, faodaidh tu eadar-obrachadh leis an t-siostam a chuingealachadh a-mhàin ris na soithichean sin a tha air an ainmeachadh san fhaidhle docker-compose.yml
.
Bheir sinn sùil air cò ris a bhios eadar-obrachadh le soithichean coltach nuair a bhios tu a’ cleachdadh òrdughan docker-compose
. Ma smaoinicheas sinn gum feum sinn logadh a-steach don t-slige psql
, an uairsin is dòcha gum bi na h-òrdughan co-fhreagarrach a’ coimhead mar seo:
docker-compose -f docker-compose.yml exec timescale psql -Upostgres
An aon àithne nach eil air a chleachdadh airson a chur an gnìomh docker-compose
agus docker
, is dòcha gum bi e coltach ri seo:
docker exec -it edp_timescale_1 psql -Upostgres
Thoir an aire gu bheil e an-còmhnaidh nas fheàrr an àithne a chleachdadh ann an leithid de chùisean docker
, agus an àithne docker-compose
, leis gu bheil seo a’ cur às don fheum air ainmean soithichean a chuimhneachadh.
Chan eil an dà òrdugh gu h-àrd cho duilich. Ach ma chleachd sinn “wrapper” san fhoirm Makefile
, a bheireadh eadar-aghaidh dhuinn ann an cruth òrdughan sìmplidh agus a chanadh e fhèin ri òrdughan fada coltach ris, dh’ fhaodadh na h-aon toraidhean a bhith air an coileanadh mar seo:
make db-shell
Tha e gu math follaiseach gu bheil an cleachdadh Makefile
ga dhèanamh nas fhasa obrachadh le soithichean!
Eisimpleir obrach
Stèidhichte air an diagram pròiseict gu h-àrd, cruthaichidh sinn am faidhle 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
Gus rèiteachadh Docker Compose a riaghladh agus eadar-obrachadh leis na soithichean air a bheil e ag innse, cruthaichidh sinn am faidhle 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
Tha a’ mhòr-chuid de na h-òrdughan a tha air am mìneachadh an seo a’ buntainn ris a h-uile soitheach, ach a’ cleachdadh an roghainn c=
a’ leigeil leat farsaingeachd àithne a chuingealachadh gu aon shoitheach.
Às dèidh a ' Makefile
deiseil, faodaidh tu a chleachdadh mar seo:
make help
- a’ cur a-mach liosta de na h-òrdughan uile a tha rim faighinn airsonmake
.
Cuideachadh air òrdughan a tha rim faighinn
make build
- a 'cruinneachadh ìomhaigh bhoDockerfile
. Anns an eisimpleir againn chleachd sinn ìomhaighean gnàthaichtetimescale
иping
. Ach an dealbhapi
tha sinn airson a chruinneachadh gu h-ionadail. Is e seo dìreach a thèid a dhèanamh às deidh an òrdugh seo a chuir an gnìomh.
A 'togail soitheach Docker
make start
- a 'cur air bhog a h-uile soitheach. Gus dìreach aon ghobhar a chuir air bhog, faodaidh tu òrdugh marmake start c=timescale
.
A 'ruith an clàr-ama container
A 'ruith soitheach ping
make login-timescale
- log a-steach gu seisean bash an t-soithichtimescale
.
A 'ruith bash ann an clàr-ama container
make db-shell
- slighe a-steachpsql
ann an soitheachtimescale
gus ceistean SQL a chuir an gnìomh an aghaidh an stòr-dàta.
A’ ruith psql ann an soitheach clàr-ama
make stop
- stad air soithichean.
A 'stad container raon-ama
make down
- stad agus toirt air falbh soithichean. Gus soitheach sònraichte a thoirt air falbh, faodaidh tu an àithne seo a chleachdadh a’ sònrachadh an t-soitheach a tha thu ag iarraidh. Mar eisimpleir -make down c=timescale
nomake down c=api
.
A 'stad agus a' sguabadh às a h-uile soitheach
Builean
Ged a tha Docker Compose a’ toirt dhuinn seata beairteach de dh’ àitheantan airson a bhith a’ riaghladh shoithichean, uaireannan faodaidh na h-òrdughan sin a bhith fada agus duilich an cuimhneachadh.
Dòigh cleachdaidh Makefile
chuidich sinn sinn le bhith a’ stèidheachadh eadar-obrachadh luath is furasta le soithichean bho fhaidhle docker-compose.yml
. Is e sin, tha sinn a 'bruidhinn mu na leanas:
- Chan eil an leasaiche ag eadar-obrachadh ach leis na soithichean pròiseict a tha air am mìneachadh ann an
docker-compose.yml
, chan eil soithichean ruith eile a’ cur bacadh air obair. - Ma thèid òrdugh sònraichte a dhìochuimhneachadh, faodaidh tu an àithne a chuir an gnìomh
make help
agus faigh cuideachadh air òrdughan a tha rim faighinn. - Chan fheum thu liostaichean fada de argamaidean a chuimhneachadh gus gnìomhan a dhèanamh leithid faighinn na h-inntrigidhean loga as ùire no logadh a-steach do shiostam. Mar eisimpleir, òrdugh mar
docker-compose -f docker-compose.yml exec timescale psql -Upostgres
a 'tionndadhmake db-shell
. - faidhl
Makefile
Faodaidh tu atharrachadh gu sùbailte ris mar a bhios am pròiseact a’ fàs. Mar eisimpleir, tha e furasta àithne a chuir ris gus cùl-taic stòr-dàta a chruthachadh no gnìomh sam bith eile a dhèanamh. - Ma chleachdas sgioba mòr de luchd-leasachaidh an aon rud
Makefile
, bidh seo a’ sgioblachadh co-obrachadh agus a’ lughdachadh mhearachdan.
PS Anns ar
Luchd leughaidh! Ciamar a nì thu fèin-ghluasad air Docker Compose?
Source: www.habr.com