Zaka zingapo zilizonse, makampani opanga mapulogalamu amasintha paradigm. Chimodzi mwazinthu izi zitha kuzindikirika ngati chidwi chokulirapo pamalingaliro a microservices. Ngakhale ma microservices siukadaulo waposachedwa kwambiri, posachedwapa kutchuka kwake kwakwera kwambiri.
Ntchito zazikulu za monolithic tsopano zasinthidwa ndi ma microservices odziyimira pawokha. Microservice imatha kuganiziridwa ngati ntchito yomwe imakhala ndi cholinga chimodzi komanso chachindunji. Mwachitsanzo, itha kukhala DBMS yolumikizana, ntchito ya Express, ntchito ya Solr.
Masiku ano, ndizovuta kulingalira kupanga pulogalamu yatsopano popanda kugwiritsa ntchito ma microservices. Ndipo izi, zimatifikitsa ku nsanja ya Docker.
Docker
Platform
Docker Kulemba
umisiri
Mukamagwira ntchito ndi Docker Compose, fayilo ya YAML imagwiritsidwa ntchito kukonza ntchito zofunsira ndikukonzekera kuyanjana kwawo. Docker Compose ndiye chida chofotokozera ndikuyendetsa mapulogalamu a Docker okhala ndi zida zambiri.
Zotengera ziwiri zomwe zikuyenda pa dongosolo la alendo
GNU Pangani
Pulogalamuyo make
, ndi chida chothandizira kupanga mapulogalamu ndi malaibulale kuchokera pama code code. Mwambiri, tinganene kuti make
imagwira ntchito panjira iliyonse yomwe imaphatikizapo kulamula mosasamala kuti asinthe zida zolowetsa kukhala mawonekedwe ena otulutsa, ku cholinga china. Kwa ife, malamulo docker-compose
zidzasinthidwa kukhala zolinga zosamveka (
Kuwuza pulogalamu make
pa zomwe tikufuna kuchokera pamenepo, tikufuna fayilo Makefile
.
mu wathu Makefile
adzakhala ndi malamulo okhazikika docker
ΠΈ docker-compose
, zomwe zapangidwa kuti zithetse mavuto ambiri. Mwakutero, tikulankhula za kusonkhanitsa chidebe, kuyambitsa, kuyimitsa, kuyiyambitsanso, kukonza zolowera mumtsuko, zakugwira ntchito ndi zipika za chidebe, komanso kuthana ndi mavuto ena ofanana.
Milandu Yodziwika Yogwiritsa Ntchito Docker Compose
Tiyerekezere pulogalamu yapaintaneti yomwe ili ndi zigawo izi:
- TimescaleDB database (Postgres).
- Express.js ntchito.
- Ping (chidebe chokha, sichichita chilichonse chapadera).
Izi zidzafunika zotengera 3 za Docker ndi fayilo docker-compose
, yomwe ili ndi malangizo oyendetsera zotengerazi. Chidebe chilichonse chimakhala ndi ma touchpoints osiyanasiyana. Mwachitsanzo, ndi chidebe timescale
zidzatheka kugwira ntchito mofanana ndi momwe amagwirira ntchito ndi nkhokwe. Izi, zimakupatsani mwayi wochita izi:
- Kulowa mu chipolopolo cha Postgres.
- Kulowetsa ndi kutumiza kunja kwa matebulo.
- chilengedwe
pg_dump
matebulo kapena database.
Express.js application chidebe, expressjs
, ikhoza kukhala ndi izi:
- Kupereka deta yatsopano kuchokera ku chipika chadongosolo.
- Lowani ku chipolopolo kuti mupereke malamulo ena.
Kulumikizana ndi Containers
Titakhazikitsa kulumikizana pakati pa zotengera pogwiritsa ntchito Docker Compose, ndi nthawi yolumikizana ndi zotengerazo. Mkati mwa Docker Compose system pali lamulo docker-compose
, njira yothandizira -f
, zomwe zimakulolani kusamutsa fayilo ku dongosolo docker-compose.yml
.
Pogwiritsa ntchito kuthekera kwa njirayi, mutha kuchepetsa kuyanjana ndi kachitidwe kokha pazotengera zomwe zatchulidwa mufayilo. docker-compose.yml
.
Tiyeni tiwone momwe kulumikizana ndi zotengera kumawonekera mukamagwiritsa ntchito malamulo docker-compose
. Ngati tikuganiza kuti tiyenera kulowa mu chipolopolo psql
, ndiye kuti malamulo ofananira angawoneke motere:
docker-compose -f docker-compose.yml exec timescale psql -Upostgres
Lamulo lomwelo lomwe siligwiritsidwa ntchito pochita docker-compose
ndi docker
, zitha kuwoneka motere:
docker exec -it edp_timescale_1 psql -Upostgres
Chonde dziwani kuti muzochitika zotere ndikwabwino kugwiritsa ntchito lamulo docker
, ndi lamulo docker-compose
, popeza izi zimachotsa kufunika kokumbukira mayina a ziwiya.
Malamulo onse awiriwa si ovuta. Koma ngati tigwiritsa ntchito "wrapper" mu mawonekedwe Makefile
, zomwe zingatipatse mawonekedwe mwamalamulo osavuta komanso omwe angatchule malamulo aatali ofanana, ndiye kuti zotsatira zomwezo zitha kukwaniritsidwa motere:
make db-shell
Ndi zoonekeratu kuti ntchito Makefile
zimapangitsa kugwira ntchito ndi zotengera kukhala kosavuta!
Chitsanzo cha ntchito
Kutengera chithunzi cha polojekiti yomwe ili pamwambapa, tipanga fayilo yotsatirayi 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
Kuwongolera kasinthidwe ka Docker Compose ndikulumikizana ndi zotengera zomwe zikufotokozera, tipanga fayilo yotsatirayi 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
Malamulo ambiri omwe afotokozedwa apa amagwira ntchito pazotengera zonse, koma pogwiritsa ntchito njirayo c=
amakulolani kuchepetsa kukula kwa lamulo ku chidebe chimodzi.
pambuyo Makefile
okonzeka, mutha kugwiritsa ntchito motere:
make help
- kupereka mndandanda wamalamulo onse omwe alipomake
.
Thandizo pa malamulo omwe alipo
make build
- kusonkhanitsa chithunzi kuchokeraDockerfile
. Mu chitsanzo chathu tinagwiritsa ntchito zithunzi zomwe zilipo kaletimescale
ΠΈping
. Koma chithunziapi
tikufuna kusonkhanitsa kwathu. Izi ndi zomwe zidzachitike pambuyo potsatira lamuloli.
Kupanga chidebe cha Docker
make start
- kuyambitsa zotengera zonse. Kuti mutsegule chidebe chimodzi chokha, mutha kugwiritsa ntchito lamulo ngatimake start c=timescale
.
Kuthamangitsa chotengera cha nthawi
Kuthamanga chidebe cha ping
make login-timescale
- lowani ku gawo la bash la chidebechotimescale
.
Kuthamanga bash mu chidebe cha nthawi
make db-shell
- polowera kupsql
mu chidebetimescale
kuyankha mafunso a SQL motsutsana ndi database.
Kuthamanga psql mu chidebe cha timescaledb
make stop
- kuyimitsa zotengera.
Kuyimitsa chidebe cha nthawi
make down
- kuyimitsa ndi kuchotsa zotengera. Kuti muchotse chidebe china, mutha kugwiritsa ntchito lamulo ili pofotokoza chidebe chomwe mukufuna. Mwachitsanzo -make down c=timescale
kapenamake down c=api
.
Kuyimitsa ndi kuchotsa zotengera zonse
Zotsatira
Ngakhale Docker Compose amatipatsa malamulo ambiri oyendetsera zotengera, nthawi zina malamulowa amatha kukhala aatali komanso ovuta kukumbukira.
Njira yogwiritsira ntchito Makefile
zidatithandiza kukhazikitsa kulumikizana mwachangu komanso kosavuta ndi zotengera kuchokera pafayilo docker-compose.yml
. Mwakutero, tikulankhula za izi:
- Wopanga mapulogalamu amangolumikizana ndi zotengera zomwe zafotokozedwamo
docker-compose.yml
, ntchito simasokonezedwa ndi zotengera zina zothamanga. - Ngati lamulo linalake layiwalika, mukhoza kupereka lamulolo
make help
ndi kupeza thandizo pa malamulo omwe alipo. - Simuyenera kukumbukira mndandanda wautali wa mikangano kuti muchite zinthu monga kupeza zolemba zaposachedwa kapena kulowa mudongosolo. Mwachitsanzo, lamulo ngati
docker-compose -f docker-compose.yml exec timescale psql -Upostgres
amasandukamake db-shell
. - file
Makefile
Mutha kusintha momwe polojekiti ikuyendera. Mwachitsanzo, ndikosavuta kuwonjezera lamulo kuti mupange zosunga zobwezeretsera kapena kuchita china chilichonse. - Ngati gulu lalikulu la omanga limagwiritsa ntchito zomwezo
Makefile
, izi zimathandizira mgwirizano ndikuchepetsa zolakwika.
PS mu wathu
Wokondedwa owerenga! Kodi mumasinthira bwanji Docker Compose?
Source: www.habr.com