Makore mashoma ega ega, iyo software yekuvandudza indasitiri inopinda paradigm shanduko. Chimwe chezviitiko izvi chinogona kucherechedzwa sekufarira kuri kukura mune pfungwa ye microservices. Kunyangwe microservices isiri iyo tekinoroji nyowani, ichangopfuura mukurumbira wayo wakakwira chaizvo.
Mahombe monolithic masevhisi ave kutsiviwa neakazvimirira, anozvimiririra mamicroservices. Iyo microservice inogona kufungidzirwa sechishandiso chinoshanda chimwechete uye chakanyanya chinangwa chinangwa. Semuenzaniso, inogona kunge iri yehukama DBMS, Express application, Solr sevhisi.
Mazuva ano, zvakaoma kufungidzira kugadzira software nyowani pasina kushandisa microservices. Uye mamiriro aya, zvakare, anotitungamira kuDocker chikuva.
Docker
Platform
Docker Kudzora
Technology
Paunenge uchishanda neDocker Compose, iyo YAML faira inoshandiswa kugadzirisa masevhisi ekushandisa uye kuronga kudyidzana kwavo nemumwe. Docker Compose saka chishandiso chekutsanangura uye nekumhanyisa multi-container Docker application.
Zvigubhu zviviri zvinomhanya pane host system
GNU Gadzira
Purogiramu make
, chinhu chakakosha chishandiso chekugadzira otomatiki kuvaka kwezvirongwa uye maraibhurari kubva kusource code. Kazhinji, tinogona kutaura izvozvo make
inoshanda kune chero maitiro anosanganisira kuita zvisina tsarukano mirairo yekushandura zvimwe zvinhu zvekupinza kuita imwe fomu yekuburitsa kune chimwe chinangwa. Kana tiri isu, mirairo docker-compose
ichashandurwa kuita zvinangwa zvisingaoneki (
Kuudza chirongwa make
nezvezvatinoda kubva pazviri, tinoda faira Makefile
.
Mune yedu Makefile
ichava nemirairo yenguva dzose docker
ΠΈ docker-compose
, izvo zvakagadzirirwa kugadzirisa matambudziko mazhinji. Sezvineiwo, tiri kutaura nezve kuunganidza mudziyo, nezve kutanga, kuimisa, kuitangazve, nezve kuronga mushandisi kupinda mumudziyo, nezve kushanda nematanda emidziyo, uye nezve kugadzirisa mamwe matambudziko akafanana.
Yakajairika Kushandisa Makesi eDocker Compose
Ngatimbofungidzirai yenguva dzose yewebhu application ine zvinotevera zvikamu:
- TimescaleDB dhatabhesi (Postgres).
- Express.js application.
- Ping (chirongo chete, hachiite chero chinhu chakakosha).
Ichi chishandiso chinoda 3 Docker midziyo uye faira docker-compose
, iyo ine mirairo yekutarisira midziyo iyi. Chigaba chega chega chichava nematanho akasiyana. Somuenzaniso, nemudziyo timescale
zvinokwanisika kushanda nenzira imwechete sezvavanoshanda nedatabase. Kureva, inobvumidza iwe kuita zvinotevera zviito:
- Kupinda muPostgres shell.
- Kupinza uye kutumira kunze kwematafura.
- zvisikwa
pg_dump
matafura kana dhatabhesi.
Express.js application mudziyo, expressjs
, inogona kunge iine zvinotevera kugona:
- Kupa data nyowani kubva kune system log.
- Pinda kune shell kuti uite mimwe mirairo.
Kudyidzana neContainers
Kana tangomisa kutaurirana pakati pemidziyo uchishandisa Docker Compose, yave nguva yekutaurirana nemidziyo iyoyo. Mukati meDocker Compose system pane murairo docker-compose
, kutsigira sarudzo -f
, iyo inokubvumira kuendesa faira kune system docker-compose.yml
.
Uchishandisa kugona kweiyi sarudzo, unogona kudzikamisa kudyidzana nehurongwa chete kune izvo midziyo inotaurwa mufaira. docker-compose.yml
.
Ngatitarisei kuti kusangana nemidziyo kunoratidzika sei kana uchishandisa mirairo docker-compose
. Kana isu tichifungidzira kuti isu tinofanirwa kupinda mugomba psql
, ipapo mirairo inoenderana inogona kutaridzika seizvi:
docker-compose -f docker-compose.yml exec timescale psql -Upostgres
Murairo mumwechete usingashandiswe kuita docker-compose
uye docker
, inogona kutaridzika seizvi:
docker exec -it edp_timescale_1 psql -Upostgres
Ndapota cherechedza kuti mumamiriro ezvinhu akadaro zvinogara zviri nani kushandisa murairo docker
, uye murayiro docker-compose
, sezvo izvi zvinobvisa kukosha kwekuyeuka mazita emidziyo.
Mirairo miviri iri pamusoro haina kuoma kudaro. Asi kana takashandisa "wrapper" muchimiro Makefile
, iyo yaizotipa chinongedzo muchimiro chemirairo yakapusa uye iyo pachayo inodaidza yakafanana mirairo refu, zvino mibairo mimwechete inogona kuwanikwa seizvi:
make db-shell
Zviri pachena kuti kushandiswa Makefile
inoita kuti kushanda nemidziyo kuve nyore!
Muenzaniso wekushanda
Kubva pane iri pamusoro purojekiti dhizaini, isu tichagadzira inotevera faira 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
Kugadzirisa iyo Docker Compose kumisikidzwa uye kupindirana nemidziyo yainotsanangura, isu tichagadzira inotevera faira 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
Mizhinji yemirairo inotsanangurwa pano inoshanda kumidziyo yese, asi uchishandisa sarudzo c=
inokubvumira kudzikamisa chiyero chemurairo kune imwe mudziyo.
Pashure Makefile
yakagadzirira, unogona kuishandisa seizvi:
make help
- Kuburitsa rondedzero yemirairo yese iripomake
.
Rubatsiro pamirairo iripo
make build
- kuunganidza mufananidzo kubvaDockerfile
. Mumuenzaniso wedu takashandisa mifananidzo iripotimescale
ΠΈping
. Asi mufananidzoapi
tinoda kuunganidza munharaunda. Izvi ndizvo chaizvo zvichaitwa mushure mekuita murairo uyu.
Kuvaka mudziyo weDocker
make start
- kuburitsa midziyo yese. Kuti utange chigadziko chimwe chete, unogona kushandisa rairo sengemake start c=timescale
.
Kumhanyisa mudziyo wenguva
Kumhanyisa mudziyo weping
make login-timescale
- pinda kune bash chikamu chemudziyotimescale
.
Kumhanya bash mugaba renguva
make db-shell
- kupindapsql
mumudziyotimescale
kuita SQL mibvunzo inopesana ne database.
Kumhanya psql mugaba retimescaledb
make stop
β kumisa midziyo.
Kumisa chigadziko chenguva
make down
β kumisa nekubvisa midziyo. Kuti ubvise imwe mudziyo, unogona kushandisa murairo uyu uchitsanangura mudziyo waunoda. Semuyenzaniso -make down c=timescale
kanamake down c=api
.
Kumisa nekudzima midziyo yese
Migumisiro
Kunyangwe Docker Compose inotipa yakapfuma seti yemirairo yekugadzirisa midziyo, dzimwe nguva iyi mirairo inogona kureba uye yakaoma kurangarira.
Nzira yekushandisa Makefile
yakatibatsira kumisikidza nekukurumidza uye nyore kudyidzana nemidziyo kubva mufaira docker-compose.yml
. Zvikurukuru, tiri kutaura pamusoro pezvinotevera:
- Mugadziri anodyidzana chete nemidziyo yeprojekiti inotsanangurwa mukati
docker-compose.yml
, basa haripindirwe nemamwe macontainer ekumhanya. - Muchiitiko chekuti mumwe murairo wakakanganwa, unogona kuita murairo
make help
uye uwane rubatsiro pamirairo iripo. - Haufanire kuyeuka runyorwa rurefu rwenharo kuti uite zviito zvakaita sekuwana ichangoburwa zvinyorwa zvelogi kana kupinda muhurongwa. Somuenzaniso, murairo wakafanana
docker-compose -f docker-compose.yml exec timescale psql -Upostgres
inoshanduka kuvamake db-shell
. - faira
Makefile
Iwe unogona kuchinjika kuchinjika kwairi sezvo purojekiti inokura. Semuenzaniso, zviri nyore kuwedzera murairo kugadzira dhatabhesi yekuchengetedza kana kuita chero chimwe chiito. - Kana boka guru revagadziri rinoshandisa zvakafanana
Makefile
, izvi zvinogadzirisa kubatana uye zvinoderedza kukanganisa.
PS Mune yedu
Vanodiwa vaverengi! Iwe unoita sei otomatiki Docker Compose?
Source: www.habr.com