Ukuqamba iDocker: Ukwenza lula umsebenzi wakho usebenzisa iiMakefiles

Rhoqo kwiminyaka embalwa, ishishini lophuhliso lwesoftware lifumana utshintsho lweparadigm. Esinye sezi ziganeko sinokuqatshelwa njengokukhula komdla kwingqikelelo yee-microservices. Nangona i-microservices ingeyiyo itekhnoloji entsha, kutsha nje ukuthandwa kwayo kuye kwanda.

Iinkonzo ezinkulu ze-monolithic ngoku zithathelwa indawo yi-microservices ezizimeleyo, ezizimeleyo. I-microservice inokucingelwa njengesicelo esisebenza injongo enye kunye necacileyo. Ngokomzekelo, inokuba yi-DBMS yobudlelwane, isicelo se-Express, inkonzo ye-Solr.

Ukuqamba iDocker: Ukwenza lula umsebenzi wakho usebenzisa iiMakefiles

Kule mihla, kunzima ukucinga ukuphuhlisa inkqubo entsha yesoftware ngaphandle kokusebenzisa ii-microservices. Kwaye le meko, ngokulandelayo, isikhokelela kwiqonga leDocker.

Docker

Platform Docker, ekuphuhliseni nasekuhanjisweni kwee-microservices, sele iphantse ibe ngumgangatho woshishino. Kwiwebhusayithi yeprojekthi unokufumanisa ukuba i-Docker kuphela kweqonga elizimeleyo leekhonteyina elivumela imibutho ukuba yenze lula nasiphi na isicelo, kwaye isasaze kwaye ibaqhube kuyo nayiphi na imeko-ukusuka kumafu axubileyo ukuya kwiinkqubo zomda.

Docker Ukubhala

Te knoloji Docker Ukubhala yenzelwe ukuqwalasela usetyenziso lwezikhongozeli ezininzi. Iprojekthi yeDocker Compose inokuqulatha uninzi lwezikhongozeli zeDocker njengoko iimfuno zabadali beprojekthi.

Xa usebenza kunye neDocker Compose, ifayile ye-YAML isetyenziselwa ukuqwalasela iinkonzo zesicelo kunye nokucwangcisa intsebenziswano yabo enye kwenye. I-Docker Compose ke ngoko sisixhobo sokuchaza kunye nokuqhuba usetyenziso lwe-Docker enezikhongozeli ezininzi.

Ukuqamba iDocker: Ukwenza lula umsebenzi wakho usebenzisa iiMakefiles
Izikhongozeli ezibini ezisebenza kwi-host system

I-GNU Yenza

Inkqubo make, sisixhobo sokwenza ngokuzenzekelayo ukwakhiwa kweenkqubo kunye namathala eencwadi ukusuka kwikhowudi yomthombo. Ngokubanzi, sinokuthi make isebenza kuyo nayiphi na inkqubo ebandakanya ukuphumeza imiyalelo engafanelekanga ukuguqula imathiriyeli yegalelo kwifomu yemveliso ethile, kwiinjongo ezithile. Kwimeko yethu, imiyalelo docker-compose iya kuguqulelwa kwiinjongo ezingabonakaliyo (Iithagethi zefowuni).

Ukuxelela inkqubo make malunga nento esiyifunayo kuyo, sifuna ifayile Makefile.

Kwiphepha lethu Makefile iya kuba nemiyalelo eqhelekileyo docker ΠΈ docker-compose, eziyilelwe ukusombulula iingxaki ezininzi. Oko kukuthi, sithetha malunga nokudibanisa isitya, malunga nokusiqala, ukusimisa, ukuyiqala kwakhona, malunga nokulungelelanisa ukungena komsebenzisi kwisikhongozeli, malunga nokusebenza kunye nezigodo zesikhongozeli, kunye nokusombulula ezinye iingxaki ezifanayo.

Amatyala osetyenziso oluqhelekileyo lweDocker Compose

Makhe sibe nomfanekiso wesicelo sewebhu esiqhelekileyo esinamacandelo alandelayo:

  • Idatabase ye-TimescaleDB (iPostgres).
  • Express.js isicelo.
  • I-Ping (isitya nje, ayenzi nto ekhethekileyo).

Esi sicelo siya kufuna izitya ezi-3 zeDocker kunye nefayile docker-compose, equlethe imiyalelo yokulawula ezi zikhongozeli. Isikhongozeli ngasinye siya kuba neendawo zokucofa ezahlukeneyo. Umzekelo, kunye nesitya timescale kuyakwenzeka ukusebenza malunga nendlela efanayo njengoko besebenza ngoovimba beenkcukacha. Oko kukuthi, ikuvumela ukuba wenze ezi ntshukumo zilandelayo:

  • Ukungena kwiqokobhe lePostgres.
  • Ukungenisa kunye nokuthumela ngaphandle kweetafile.
  • Indalo pg_dump iitafile okanye oovimba beenkcukacha.

Express.js isicelo isikhongozeli, expressjs, inokuba nobu buchule bulandelayo:

  • Ukubonelela ngedatha entsha evela kwilog yesistim.
  • Ngena kwiqokobhe ukwenza imiyalelo ethile.

Ukusebenzisana neMigqomo

Nje ukuba simise unxibelelwano phakathi kwezikhongozeli zisebenzisa iDocker Compose, lixesha lokunxibelelana nezo zikhongozeli. Ngaphakathi kwenkqubo yeDocker Compose kukho umyalelo docker-compose, ukhetho oluxhasayo -f, ekuvumela ukuba uthumele ifayile kwisixokelelwano docker-compose.yml.

Usebenzisa amandla olu khetho, unganciphisa unxibelelwano nenkqubo kuphela kwezo zikhongozeli zikhankanywe kwifayile. docker-compose.yml.

Makhe sijonge ukuba ukunxibelelana nezikhongozeli kujongeka njani xa usebenzisa imiyalelo docker-compose. Ukuba sicinga ukuba kufuneka singene kwiqokobhe psql, emva koko imiyalelo ehambelanayo inokujongeka ngolu hlobo:

docker-compose -f docker-compose.yml exec timescale psql -Upostgres

Umyalelo ofanayo ongasetyenziswanga ukuphumeza docker-compose, kwaye docker, inokubonakala ngolu hlobo:

docker exec -it  edp_timescale_1 psql -Upostgres

Nceda uqaphele ukuba kwiimeko ezinjalo kusoloko kukhethwa ukusebenzisa umyalelo docker, kunye neqela docker-compose, njengoko oku kuphelisa imfuno yokukhumbula amagama wezikhongozeli.

Yomibini le miyalelo ingasentla ayinzima kangako. Kodwa ukuba sisebenzise "i-wrapper" kwifom Makefile, eya kuthi isinike ujongano ngendlela yemiyalelo elula kwaye yona ngokwayo ibize imiyalelo emide efanayo, ngoko iziphumo ezifanayo zinokufumaneka ngolu hlobo:

make db-shell

Kucacile ukuba ukusetyenziswa Makefile yenza ukusebenza ngezikhongozeli kube lula!

Umzekelo osebenzayo

Ngokusekelwe kwidayagram yeprojekthi engentla, siya kudala le fayile ilandelayo 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

Ukulawula i-Docker Compose uqwalaselo kunye nokusebenzisana nezikhongozeli ezichazayo, siya kudala le fayile ilandelayo 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

Uninzi lwemiyalelo echazwe apha isebenza kuzo zonke izikhongozeli, kodwa usebenzisa ukhetho c= ikuvumela ukuba unciphise umda womyalelo kwisikhongozeli esinye.

Emva Makefile ilungile, ungayisebenzisa ngolu hlobo:

  • make help β€” ekhupha uluhlu lwayo yonke imiyalelo ekhoyo make.

Ukuqamba iDocker: Ukwenza lula umsebenzi wakho usebenzisa iiMakefiles
Uncedo kwimiyalelo ekhoyo

  • make build - ukudibanisa umfanekiso ukusuka Dockerfile. Kumzekelo wethu sasebenzisa imifanekiso ekhoyo timescale ΠΈ ping. Kodwa umfanekiso api sifuna ukuqokelela ekuhlaleni. Yiloo nto kanye eya kwenziwa emva kokuphumeza lo myalelo.

Ukuqamba iDocker: Ukwenza lula umsebenzi wakho usebenzisa iiMakefiles
Ukwakha isikhongozeli seDocker

  • make start - ukusungula zonke izitya. Ukuphehlelela nje isikhongozeli esinye, ungasebenzisa umyalelo onje make start c=timescale.

Ukuqamba iDocker: Ukwenza lula umsebenzi wakho usebenzisa iiMakefiles
Ukuqhuba isikhongozeli sexesha

Ukuqamba iDocker: Ukwenza lula umsebenzi wakho usebenzisa iiMakefiles
Ukuqhuba isitya se-ping

  • make login-timescale -ngena kwiseshini ye-bash yesikhongozeli timescale.

Ukuqamba iDocker: Ukwenza lula umsebenzi wakho usebenzisa iiMakefiles
Ukubaleka i-bash kwisitya se-timescale

  • make db-shell - yokungena psql kwisikhongozeli timescale ukwenza imibuzo yeSQL ngokuchasene nesiseko sedata.

Ukuqamba iDocker: Ukwenza lula umsebenzi wakho usebenzisa iiMakefiles
Ukuqhuba i-psql kwisitya se-timescaledb

  • make stop - izikhongozeli zokumisa.

Ukuqamba iDocker: Ukwenza lula umsebenzi wakho usebenzisa iiMakefiles
Ukumisa isikhongozeli sexesha

  • make down β€” ukumisa nokususa izitya. Ukususa isikhongozeli esithile, ungasebenzisa lo myalelo uchaza isikhongozeli esifunekayo. Umzekelo - make down c=timescale okanye make down c=api.

Ukuqamba iDocker: Ukwenza lula umsebenzi wakho usebenzisa iiMakefiles
Ukumisa kunye nokucima zonke izitya

Iziphumo

Nangona iDocker Compose isinika iseti etyebileyo yemiyalelo yokulawula izikhongozeli, ngamanye amaxesha le miyalelo inokuba mide kwaye kube nzima ukuyikhumbula.

Indlela yokusetyenziswa Makefile Isincedile ukuseka unxibelelwano olukhawulezayo nolulula kunye nezikhongozeli ezivela kwifayile docker-compose.yml. Oko kukuthi, sithetha ngoku kulandelayo:

  • Umphuhlisi usebenzisana kuphela nezikhongozeli zeprojekthi ezichazwe kuyo docker-compose.yml, umsebenzi awuphazanyiswa zezinye izikhongozeli ezibalekayo.
  • Kwimeko apho umyalelo othile ulibele, ungenza umyalelo make help kwaye ufumane uncedo kwimiyalelo ekhoyo.
  • Awudingi ukukhumbula uluhlu olude lweengxoxo ukwenza iintshukumo ezinjengokufumana amangeno elog yamva nje okanye ukungena kwinkqubo. Umzekelo, umyalelo ofana docker-compose -f docker-compose.yml exec timescale psql -Upostgres Ijika ibe make db-shell.
  • Ifayile Makefile Unokuziqhelanisa ngokuguquguqukayo kuyo njengoko iprojekthi ikhula. Umzekelo, kulula ukongeza umyalelo wokwenza ugcino lwedatha okanye wenze nasiphi na esinye isenzo.
  • Ukuba iqela elikhulu labaphuhlisi lisebenzisa okufanayo Makefile, oku kulungelelanisa intsebenziswano kunye nokunciphisa iimpazamo.

PS Kwiphepha lethu indawo yokuthengisa kukho umfanekiso Docker, enokufakwa ngonqakrazo olunye. Ungajonga ukusebenza kwezikhongozeli kwi VPS. Bonke abathengi abatsha banikwa iintsuku ezi-3 zovavanyo simahla.

Bafundi abathandekayo! Uyenza njani iDocker Compose?

Ukuqamba iDocker: Ukwenza lula umsebenzi wakho usebenzisa iiMakefiles

umthombo: www.habr.com

Yongeza izimvo