Njalo eminyakeni embalwa, imboni yokuthuthukiswa kwesofthiwe iba noshintsho lwepharadigm. Esinye salezi zimo singabonwa njengentshisekelo ekhulayo kumqondo wezinsizakalo ezincane. Yize ama-microservices engebona ubuchwepheshe obusha kakhulu, muva nje ukuthandwa kwawo kunyuke kakhulu.
Izinsizakalo ezinkulu ze-monolithic manje sezithathelwa indawo yizinsizakalo ezincane ezizimele, ezizimele. I-microservice ingacatshangwa njengohlelo lokusebenza olufeza injongo eyodwa futhi ecaciswe kakhulu. Isibonelo, kungaba i-DBMS ehlobene, uhlelo lokusebenza lwe-Express, isevisi ye-Solr.
Kulezi zinsuku, kunzima ukucabanga ukuthuthukisa uhlelo olusha lwesofthiwe ngaphandle kokusebenzisa ama-microservices. Futhi lesi simo, futhi, sisiholela endaweni yesikhulumi se-Docker.
Docker
Platform
I-Docker Ukubhala
Ubuchwepheshe
Lapho usebenza ne-Docker Compose, ifayela le-YAML lisetshenziselwa ukulungisa izinsiza zohlelo lokusebenza nokuhlela ukusebenzisana kwazo. Ngakho-ke i-Docker Compose iyithuluzi lokuchaza nokusebenzisa izinhlelo zokusebenza ze-Docker ezineziqukathi eziningi.
Iziqukathi ezimbili ezisebenza kusistimu yokusingatha
I-GNU Yenza
Uhlelo make
, empeleni iyithuluzi lokuzenzakalela ukwakhiwa kwezinhlelo nemitapo yolwazi kusuka kukhodi yomthombo. Ngokuvamile, singasho lokho make
kusebenza kunoma iyiphi inqubo ebandakanya ukwenza imiyalo engafanele ukuguqula izinto zokufakwayo zibe uhlobo oluthile lokuphumayo, zibe umgomo othile. Esimweni sethu, imiyalo docker-compose
izoguqulwa ibe yizinjongo ezingabonakali (
Ukutshela uhlelo make
mayelana nokuthi sifunani kuyo, sidinga ifayela Makefile
.
Kuwethu Makefile
izoqukatha imiyalo ejwayelekile docker
ΠΈ docker-compose
, eziklanyelwe ukuxazulula izinkinga eziningi. Okungukuthi, sikhuluma ngokuhlanganisa isitsha, ngokusiqala, ukusimisa, ukusiqala kabusha, mayelana nokuhlela ukungena ngemvume komsebenzisi esitsheni, mayelana nokusebenza ngezingodo zesitsha, nokuxazulula ezinye izinkinga ezifanayo.
Amacala Okusetshenziswa Okujwayelekile Wokuqamba Kwe-Docker
Ake sicabange uhlelo lokusebenza lwewebhu olujwayelekile olunalezi zingxenye ezilandelayo:
- Isizindalwazi se-TimescaleDB (Postgres).
- Isicelo se-Express.js.
- I-Ping (isitsha nje, ayenzi lutho olukhethekile).
Lolu hlelo lokusebenza luzodinga iziqukathi ze-Docker ezi-3 nefayela docker-compose
, equkethe imiyalelo yokuphatha lezi zitsha. Isiqukathi ngasinye sizoba nezindawo zokuthinta ezihlukile. Isibonelo, ngesitsha timescale
kuzokwazi ukusebenza cishe ngendlela efanayo njengoba besebenza nesizindalwazi. Okungukuthi, ikuvumela ukuthi wenze lezi zenzo ezilandelayo:
- Ukungena kugobolondo le-Postgres.
- Ukungenisa nokuthekelisa amathebula.
- indalo
pg_dump
amathebula noma isizindalwazi.
Isitsha sesicelo se-Express.js, expressjs
, ingaba nalawa makhono alandelayo:
- Ukunikeza idatha entsha evela kulogi yesistimu.
- Ngena kugobolondo ukuze wenze imiyalo ethile.
Ukusebenzisana neziqukathi
Uma sesimise ukuxhumana phakathi kweziqukathi ezisebenzisa i-Docker Compose, sekuyisikhathi sokuxhumana nalezo ziqukathi. Ngaphakathi kohlelo lwe-Docker Compose kunomyalo docker-compose
, inketho esekelayo -f
, okuvumela ukuthi udlulisele ifayela ohlelweni docker-compose.yml
.
Usebenzisa amandla ale nketho, ungakhawulela ukusebenzisana nesistimu kuphela kulezo ziqukathi ezishiwo efayeleni. docker-compose.yml
.
Ake sibheke ukuthi ukusebenzisana neziqukathi kubukeka kanjani uma usebenzisa imiyalo docker-compose
. Uma sicabanga ukuthi sidinga ukungena kugobolondo psql
, khona-ke imiyalo ehambisanayo ingase ibukeke kanje:
docker-compose -f docker-compose.yml exec timescale psql -Upostgres
Umyalo ofanayo ongasetshenziselwa ukwenza docker-compose
, futhi docker
, ingase ibukeke kanje:
docker exec -it edp_timescale_1 psql -Upostgres
Sicela uqaphele ukuthi ezimweni ezinjalo kungcono ngaso sonke isikhathi ukusebenzisa umyalo docker
, kanye nomyalo docker-compose
, njengoba lokhu kuqeda isidingo sokukhumbula amagama ezitsheni.
Yomibili le miyalo engenhla ayinzima kangako. Kodwa uma sisebenzise "i-wrapper" efomini Makefile
, okungasinikeza isixhumi esibonakalayo ngendlela yemiyalo elula futhi ngokwayo ebibiza imiyalo emide efanayo, bese imiphumela efanayo ingafinyelelwa ngale ndlela:
make db-shell
Kusobala ukuthi ukusetshenziswa Makefile
kwenza ukusebenza ngeziqukathi kube lula kakhulu!
Isibonelo esisebenzayo
Ngokusekelwe kumdwebo wephrojekthi ongenhla, sizodala ifayela elilandelayo 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
Ukuphatha ukucushwa kwe-Docker Compose futhi uxhumane neziqukathi ezichazayo, sizodala ifayela elilandelayo 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
Iningi lemiyalo echazwe lapha isebenza kuzo zonke iziqukathi, kodwa kusetshenziswa inketho c=
ikuvumela ukuthi ukhawulele ububanzi bomyalelo esitsheni esisodwa.
Emva Makefile
isilungile, ungayisebenzisa kanje:
make help
β ukukhishwa kohlu lwayo yonke imiyalo etholakalayomake
.
Usizo emiyalweni etholakalayo
make build
- ukuhlanganisa isithombe kusukaDockerfile
. Esibonelweni sethu sasebenzisa izithombe ezikhonatimescale
ΠΈping
. Kodwa isithombeapi
sifuna ukuqoqa endaweni. Yilokhu kanye okuzokwenziwa ngemva kokwenza lo myalo.
Ukwakha isitsha se-Docker
make start
- ukwethula zonke iziqukathi. Ukuze uqalise isiqukathi esisodwa nje, ungasebenzisa umyalo onjengawomake start c=timescale
.
Ukuqalisa isitsha sesikali sesikhathi
Ukugijima isitsha se-ping
make login-timescale
- ngena ku-bash session yesitshatimescale
.
Ukugijima i-bash esitsheni se-timescale
make db-shell
- ukungena kupsql
esitshenitimescale
ukwenza imibuzo ye-SQL ngokumelene nesizindalwazi.
Isebenzisa i-psql esitsheni se-timescaledb
make stop
- izitsha zokumisa.
Ukumisa isitsha sesikali sesikhathi
make down
β Ukumisa kanye nokukhipha iziqukathi. Ukuze ususe isitsha esithile, ungasebenzisa lo myalo ucacisa isiqukathi osifunayo. Ngokwesibonelo -make down c=timescale
nomamake down c=api
.
Ukumisa nokususa zonke iziqukathi
Imiphumela
Yize i-Docker Compose isinika isethi yemiyalo ecebile yokuphatha iziqukathi, kwesinye isikhathi le miyalo ingaba yinde futhi kube nzima ukuyikhumbula.
Indlela yokusebenzisa Makefile
usisize ukuthi siqale ukuxhumana okusheshayo nokulula neziqukathi ezivela kufayela docker-compose.yml
. Okungukuthi, sikhuluma ngalokhu okulandelayo:
- Unjiniyela usebenzisana kuphela neziqukathi zephrojekthi ezichazwe kuyo
docker-compose.yml
, umsebenzi awuphazanyiswa ezinye iziqukathi ezigijimayo. - Esimeni lapho umyalo othile ukhohliwe, ungakwazi ukukhipha umyalo
make help
futhi uthole usizo emiyalweni etholakalayo. - Akudingekile ukuthi ukhumbule uhlu olude lwama-agumenti ukuze wenze izenzo ezinjengokuthola ukufakwa kwamalogu kwakamuva noma ukungena ohlelweni. Ngokwesibonelo, umyalo like
docker-compose -f docker-compose.yml exec timescale psql -Upostgres
iphenduka ibemake db-shell
. - Π€Π°ΠΉΠ»
Makefile
Ungakwazi ukuzivumelanisa nezimo lapho iphrojekthi ikhula. Isibonelo, kulula ukwengeza umyalo ukuze udale ikhophi yasenqolobaneni noma wenze esinye isenzo. - Uma ithimba elikhulu labathuthukisi lisebenzisa okufanayo
Makefile
, lokhu kwenza kube lula ukusebenzisana futhi kunciphisa amaphutha.
PS Kuwethu
Bafundi abathandekayo! Uyenza kanjani i-Docker Compose ngokuzenzakalelayo?
Source: www.habr.com