Docker Compose: Fududeynta Shaqadaada Isticmaalka Makefiles

Dhowrkii sano ee la soo dhaafay, warshadaha horumarinta software-ku waxa ay maraan isbedel muuqda. Mid ka mid ah ifafaalahan ayaa loo aqoonsan karaa inay tahay xiisaha sii kordhaya ee fikradda adeegyada yaryar. In kasta oo adeeg-yartu aanay ahayn tignoolajiyada ugu cusub, haddana dhawaan uun caannimadeeda ayaa cirka isku shareertay.

Adeegyo waaweyn oo keli keli ah ayaa hadda lagu beddelay adeegyo yaryar oo madaxbannaan oo madaxbannaan. Adeegga yar-yar waxaa loo malayn karaa inuu yahay codsi u adeega hal ujeedo oo gaar ah. Tusaale ahaan, waxay noqon kartaa DBMS xidhiidhsan, codsi Express, adeeg Solr.

Docker Compose: Fududeynta Shaqadaada Isticmaalka Makefiles

Maalmahan, way adag tahay in la qiyaaso horumarinta nidaamka software cusub iyada oo aan la isticmaalin adeeg-yaraha. Xaaladdan, markeeda, waxay nagu hogaaminaysaa goobta Docker.

Docker

Platform Docker, horumarinta iyo geynta adeegyada yaryar, waxay noqdeen ku dhawaad ​​heerka warshadaha. Bogga internetka ee mashruuca waxaad ku ogaan kartaa in Docker uu yahay goobta kaliya ee madax-bannaanida weel kaas oo u oggolaanaya ururrada inay si dadaal la'aan ah u abuuraan codsi kasta, iyo sidoo kale u qaybiyaan oo ku socodsiiyaan deegaan kasta - laga bilaabo daruuraha isku-dhafka ah ilaa nidaamyada geesaha.

Qodobbada

Engineering Qodobbada loogu talagalay habaynta codsiyada weel badan. Mashruuca Docker Compose wuxuu ka koobnaan karaa weelal badan oo Docker ah inta uu u baahan yahay abuuraha mashruuca.

Markaad la shaqaynayso Docker Compose, faylka YAML waxaa loo isticmaalaa in lagu habeeyo adeegyada codsiga iyo habaynta isdhexgalka midba midka kale. Docker Compose waa qalab lagu sifeeyo laguna socodsiiyo codsiyada Docker-ka weelasha badan.

Docker Compose: Fududeynta Shaqadaada Isticmaalka Makefiles
Laba weel oo ku shaqeeya nidaamka martida loo yahay

GNU Samee

Barnaamijka make, Asal ahaan waa aalad si otomaatig ah loogu dhisayo barnaamijyada iyo maktabadaha laga soo bilaabo koodhka isha. Guud ahaan, waxaan dhihi karnaa taas make waxay khusaysaa nidaam kasta oo ku lug leh fulinta amarada aan sabab lahayn si loogu beddelo qaar ka mid ah agabka wax-soo-saarka qaar ka mid ah qaab wax-soo-saarka, oo loo beddelo yool. Xaaladeena, amarrada docker-compose waxa loo bedeli doonaa yoolal aan la taaban karin (Beegsiga telefoonka).

Si aad u sheegto barnaamijka make Wixii aan ka rabno, waxaan u baahanahay fayl Makefile.

Inaga Makefile waxaa ku jiri doona amarro joogto ah docker ΠΈ docker-compose, kuwaas oo loogu talagalay in lagu xalliyo dhibaatooyin badan. Sida, waxaan ka hadleynaa ururinta weelka, in la bilaabo, joojinta, dib u bilaabida, ku saabsan habeynta user login ee weelka, ku shaqeynta qoryaha weelka, iyo xallinta dhibaatooyinka kale ee la midka ah.

Kiisaska Isticmaalka Caadiga ah ee Buuxinta Docker

Aynu qiyaasno arji shabakadeed caadi ah oo leh qaybaha soo socda:

  • Xogta TimecaleDB (Postgres).
  • Codsiga Express.js.
  • Ping (kaliya weel, ma sameeyo wax gaar ah).

Codsigan wuxuu u baahan doonaa 3 weel oo Docker ah iyo fayl docker-compose, kaas oo ka kooban tilmaamo lagu maamulayo weelashaas. Weel kastaa wuxuu yeelan doonaa meelo la taaban karo oo kala duwan. Tusaale ahaan, weel leh timescale waxa suurto gal noqon doona in ay u shaqeeyaan ku dhawaad ​​si la mid ah sida ay ula shaqeeyaan database-yada. Magac ahaan, waxay kuu ogolaaneysaa inaad sameyso ficilada soo socda:

  • Gelida qolofka Postgres
  • Soo dejinta iyo dhoofinta miisaska.
  • abuuridda pg_dump miisaska ama database-yada.

Express.js weelka codsiga, expressjs, waxa uu yeelan karaa awoodaha soo socda:

  • Bixinta xog cusub oo ka timid log-ka nidaamka
  • Soo gal qolofka si aad ufuliso amarrada qaarkood.

La falgalka Konteenarada

Marka aan dejinno xiriirka ka dhexeeya weelasha anagoo adeegsanayna Docker Compose, waa waqtigii lala xiriiri lahaa weelashaas. Gudaha nidaamka 'Docker Compose' waxaa jira amar docker-compose, doorashada taageerada -f, kaas oo kuu ogolaanaya inaad ku wareejiso faylka nidaamka docker-compose.yml.

Adigoo isticmaalaya awoodaha doorashadan, waxaad xaddidi kartaa isdhexgalka nidaamka oo keliya weelasha lagu sheegay faylka docker-compose.yml.

Aynu eegno sida isdhexgalka weelasha ay u egyihiin marka la isticmaalayo amarrada docker-compose. Haddii aan qiyaasno inaan u baahanahay inaan galno qolofka psql, markaas amarada u dhigma waxay u ekaan karaan sidan:

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

Isla amarka aan loo isticmaalin fulinta docker-composeiyo docker, waxay u ekaan kartaa sidan:

docker exec -it  edp_timescale_1 psql -Upostgres

Fadlan la soco in xaaladahan oo kale ay had iyo jeer door bidaan in la isticmaalo amarka docker, iyo amarka docker-compose, maadaama ay tani meesha ka saarayso baahida loo qabo in la xasuusto magacyada weelka.

Labada amar ee kor ku xusan maaha kuwo aad u adag. Laakin haddii aan u isticmaalno "duubo" qaabka Makefile, kaas oo na siin doona interface qaab amarro fudud oo laftiisa u yeeri doona amarro dhaadheer oo la mid ah, ka dibna natiijooyin isku mid ah ayaa lagu gaari karaa sidan:

make db-shell

Waa wax iska cad in la isticmaalo Makefile waxay ka dhigaysa ku shaqaynta weelasha aad u fudud!

Tusaalaha shaqada

Iyada oo ku saleysan jaantuska mashruuca sare, waxaan abuuri doonaa faylka soo socda 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

Si loo maareeyo qaabka Docker Compose oo loola falgalo weelasha uu qeexayo, waxaan abuuri doonaa faylka soo socda 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

Inta badan amarada halkan lagu sifeeyay waxay khuseeyaan dhammaan weelasha, laakiin iyadoo la isticmaalayo ikhtiyaarka c= wuxuu kuu ogolaanayaa inaad xaddido baaxadda amarka hal weel.

Kadib Makefile diyaar, waxaad u isticmaali kartaa sidan:

  • make help - soo saarista liiska dhammaan amarrada diyaarsan make.

Docker Compose: Fududeynta Shaqadaada Isticmaalka Makefiles
Ka caawi amarrada la heli karo

  • make build - ururinta sawir ka Dockerfile. Tusaalahayaga waxaan isticmaalnay sawirro jira timescale ΠΈ ping. Laakin sawirka api waxaan rabnaa inaan ku aruurinno gudaha. Tani waa dhab ahaan waxa la samayn doono ka dib fulinta amarkan.

Docker Compose: Fududeynta Shaqadaada Isticmaalka Makefiles
Dhisida weelka Docker

  • make start - bilaabista dhammaan weelasha. Si aad u bilowdo hal weel, waxaad isticmaali kartaa amar sida make start c=timescale.

Docker Compose: Fududeynta Shaqadaada Isticmaalka Makefiles
Ku socodsiinta weelka wakhtiga

Docker Compose: Fududeynta Shaqadaada Isticmaalka Makefiles
Ku socodsiinta weelka ping

  • make login-timescale - gal fadhiga bash ee weelka timescale.

Docker Compose: Fududeynta Shaqadaada Isticmaalka Makefiles
Ku ordaya bash weel waqti go'an ah

  • make db-shell - gelitaanka psql weel ku jira timescale si loo fuliyo su'aalaha SQL ee lidka ku ah xogta.

Docker Compose: Fududeynta Shaqadaada Isticmaalka Makefiles
Ku socodsiinta psql weel waqti la cabiray

  • make stop - weelasha joojinta.

Docker Compose: Fududeynta Shaqadaada Isticmaalka Makefiles
Joojinta weelka wakhtiga

  • make down - joojinta iyo qaadista weelasha. Si aad meesha uga saarto weel gaar ah, waxaad isticmaali kartaa amarkan tilmaamaya weelka aad rabto. Tusaale ahaan - make down c=timescale ama make down c=api.

Docker Compose: Fududeynta Shaqadaada Isticmaalka Makefiles
Joojinta iyo tirtirida dhammaan weelasha

Natiijooyinka

In kasta oo Docker Compose uu ina siinayo amarro qani ah oo lagu maareynayo weelasha, mararka qaarkood amarradani waxay noqon karaan kuwo dheer oo ay adagtahay in la xasuusto.

Habka isticmaalka Makefile waxay naga caawisay samaynta is dhexgalka degdega ah oo fudud ee weelasha laga soo qaaday faylka docker-compose.yml. Magac ahaan, waxaan ka hadlaynaa kuwan soo socda:

  • Horumariyuhu waxa uu la falgalaa oo kaliya weelasha mashruuca ee lagu sharaxay docker-compose.yml, shaqada laguma farageliyo weelasha kale ee socda.
  • Haddii ay dhacdo in amar gaar ah la iloobo, waxaad fulin kartaa amarka make help caawimona ka hel amarrada la heli karo.
  • Uma baahnid inaad xasuusato liisaska dheer ee doodaha si aad u qabato ficilada ay ka midka yihiin helitaanka qoraaladii ugu dambeeyay ama gelida nidaamka. Tusaale ahaan, amar sida docker-compose -f docker-compose.yml exec timescale psql -Upostgres isbedela make db-shell.
  • file Makefile Waxaad si dabacsan ula qabsan kartaa marka uu mashruucu kordho. Tusaale ahaan, way fududahay in lagu daro amar si loo abuuro kayd kayd ah ama la sameeyo ficil kasta oo kale.
  • Haddii koox weyn oo horumariyayaashu isticmaalaan isla isku mid ah Makefile, tani waxay hagaajinaysaa wada shaqaynta waxayna yaraynaysaa khaladaadka.

PS Inaga suuqa waxaa jira sawir Docker, kaas oo lagu rakibi karo hal gujis. Waxaad ka hubin kartaa shaqada weelasha goobta VPS. Dhammaan macaamiisha cusub waxaa la siiyaa 3 maalmood oo tijaabo ah oo bilaash ah.

Akhristayaasha sharafta leh! Sideed otomaatig ugu samaysaa Docker Compose?

Docker Compose: Fududeynta Shaqadaada Isticmaalka Makefiles

Source: www.habr.com

Add a comment