Iga paari aasta tagant toimub tarkvaraarenduse tööstuses paradigmamuutus. Ăheks selliseks nĂ€htuseks vĂ”ib tunnistada kasvavat huvi mikroteenuste kontseptsiooni vastu. Kuigi mikroteenused ei ole uusim tehnoloogia, on selle populaarsus alles hiljuti hĂŒppeliselt tĂ”usnud.
Suured monoliitsed teenused on nĂŒĂŒd asendatud sĂ”ltumatute autonoomsete mikroteenustega. Mikroteenust vĂ”ib pidada rakenduseks, mis teenib ĂŒhte ja vĂ€ga konkreetset eesmĂ€rki. NĂ€iteks vĂ”ib see olla relatsiooniline DBMS, Express-rakendus vĂ”i Solr-teenus.
TĂ€napĂ€eval on raske ette kujutada uue tarkvarasĂŒsteemi arendamist ilma mikroteenuseid kasutamata. Ja see olukord omakorda viib meid Dockeri platvormile.
laevalaadija
Platvorm , on mikroteenuste arendamisel ja juurutamisel muutunud peaaegu tööstusstandardiks. Projekti veebisaidilt saate teada, et Docker on ainus sĂ”ltumatu konteineriseerimisplatvorm, mis vĂ”imaldab organisatsioonidel hĂ”lpsalt luua mis tahes rakendusi, samuti levitada ja kĂ€ivitada neid mis tahes keskkonnas - hĂŒbriidpilvedest servasĂŒsteemideni.
Docker loo
ĐąĐ”Ń ĐœĐŸĐ»ĐŸĐłĐžŃ mĂ”eldud mitme konteineri rakenduste konfigureerimiseks. Docker Compose'i projekt vĂ”ib sisaldada nii palju Dockeri konteinereid, kui projekti looja vajab.
Docker Compose'iga töötamisel kasutatakse YAML-faili rakendusteenuste konfigureerimiseks ja nendevahelise suhtluse korraldamiseks. Docker Compose on seega tööriist mitme konteineriga Dockeri rakenduste kirjeldamiseks ja kÀitamiseks.

Kaks konteinerit, mis töötavad hostsĂŒsteemis
GNU kaubamÀrk
Programm make, on sisuliselt tööriist programmide ja teekide loomise automatiseerimiseks lĂ€htekoodist. Ăldiselt vĂ”ime seda öelda make kehtib mis tahes protsessi kohta, mis hĂ”lmab suvaliste kĂ€skude tĂ€itmist, et teisendada mĂ”ned sisendmaterjalid mingile vĂ€ljundvormile, eesmĂ€rgi saavutamiseks. Meie puhul kĂ€sud docker-compose muudetakse abstraktseteks eesmĂ€rkideks ().
Et programmile öelda make selle kohta, mida me sellest tahame, vajame faili Makefile.
Meie Makefile sisaldab tavalisi kÀske docker О docker-compose, mis on mÔeldud paljude probleemide lahendamiseks. Nimelt rÀÀgime konteineri kokkupanemisest, selle kÀivitamisest, seiskamisest, taaskÀivitamisest, kasutaja konteinerisse sisselogimise korraldamisest, tööst konteinerilogidega ja muude sarnaste probleemide lahendamisest.
Docker Compose'i tĂŒĂŒpilised kasutusjuhud
Kujutagem ette tavalist veebirakendust, millel on jÀrgmised komponendid:
- TimescaleDB andmebaas (Postgres).
- Express.js rakendus.
- Ping (lihtsalt konteiner, ei tee midagi erilist).
See rakendus vajab 3 Dockeri konteinerit ja faili docker-compose, mis sisaldab juhiseid nende konteinerite haldamiseks. Igal konteineril on erinevad puutepunktid. NÀiteks konteineriga timescale on vÔimalik töötada ligikaudu samamoodi nagu nad töötavad andmebaasidega. Nimelt vÔimaldab see teil teha jÀrgmisi toiminguid:
- Logige sisse Postgresi kesta.
- Tabelite import ja eksport.
- loomine
pg_dumptabelid vÔi andmebaasid.
Express.js rakenduse konteiner, expressjs, vÔivad olla jÀrgmised vÔimalused:
- VĂ€rskete andmete esitamine sĂŒsteemilogist.
- Teatud kÀskude tÀitmiseks logige kesta sisse.
Suhtlemine konteineritega
Kui oleme Docker Compose'i abil konteineritevahelise suhtluse seadistanud, on aeg nende konteineritega suhelda. Docker Compose sĂŒsteemis on kĂ€sk docker-compose, tugivĂ”imalus -f, mis vĂ”imaldab faili sĂŒsteemi ĂŒle kanda docker-compose.yml.
Selle valiku vĂ”imalusi kasutades saate piirata sĂŒsteemiga suhtlemist ainult nende konteineritega, mis on failis mainitud docker-compose.yml.
Vaatame, kuidas nÀeb vÀlja interaktsioon konteineritega kÀskude kasutamisel docker-compose. Kui kujutame ette, et peame kesta sisse logima psql, siis vÔivad vastavad kÀsud vÀlja nÀha jÀrgmised:
docker-compose -f docker-compose.yml exec timescale psql -Upostgres Sama kÀsk, mida ei kasutata tÀitmiseks docker-composeJa docker, vÔib vÀlja nÀha selline:
docker exec -it edp_timescale_1 psql -Upostgres Pange tÀhele, et sellistel juhtudel on alati eelistatav kasutada kÀsku dockerja kÀsk docker-compose, kuna see vÀlistab vajaduse konteinerite nimesid meeles pidada.
MĂ”lemad ĂŒlaltoodud kĂ€sud pole nii keerulised. Aga kui kasutaksime vormis "ĂŒmbrist". Makefile, mis annaks meile liidese lihtsate kĂ€skude kujul ja ise nimetaks sarnaseid pikki kĂ€ske, siis saaks samad tulemused saavutada jĂ€rgmiselt:
make db-shell On ĂŒsna ilmne, et kasutamine Makefile muudab konteineritega töötamise palju lihtsamaks!
TöönÀide
Ălaltoodud projektiskeemi pĂ”hjal loome jĂ€rgmise faili 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 Docker Compose'i konfiguratsiooni haldamiseks ja selles kirjeldatud konteineritega suhtlemiseks loome jÀrgmise faili 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 Enamik siin kirjeldatud kĂ€ske kehtib kĂ”ikidele konteineritele, kuid kasutades suvandit c= vĂ”imaldab piirata kĂ€su ulatust ĂŒhe konteineriga.
PÀrast Makefile valmis, saate seda kasutada jÀrgmiselt:
make helpâ kĂ”igi saadaolevate kĂ€skude loendi vĂ€ljastaminemake.

Abi saadaolevate kÀskude kohta
make build- pildi kokkupanekDockerfile. Meie nÀites kasutasime olemasolevaid piltetimescaleОping. Aga piltapitahame koguda kohapeal. TÀpselt seda tehakse pÀrast selle kÀsu tÀitmist.

Dockeri konteineri ehitamine
make startâ kĂ”igi konteinerite vettelaskmine. Ainult ĂŒhe konteineri kĂ€ivitamiseks vĂ”ite kasutada kĂ€sku nagumake start c=timescale.

Ajaskaala konteineri kÀitamine

Pingimiskonteineri kÀitamine
make login-timescaleâ logige sisse konteineri bash-seanssetimescale.

Bashi kÀivitamine ajaskaala konteineris
make db-shell- sissepÀÀspsqlkonteineristimescaleSQL pÀringute tÀitmiseks andmebaasis.

Psql-i kÀivitamine ajaskaalaga b konteineris
make stopâ konteinerite peatamine.
![]()
Ajaskaala konteineri peatamine
make downâ konteinerite peatamine ja eemaldamine. Konkreetse konteineri eemaldamiseks saate selle kĂ€su abil mÀÀrata soovitud konteineri. NĂ€iteks -make down c=timescalevĂ”imake down c=api.

KÔigi konteinerite peatamine ja kustutamine
Tulemused
Kuigi Docker Compose annab meile rikkaliku hulga kÀske konteinerite haldamiseks, vÔivad need kÀsud mÔnikord muutuda pikaks ja neid on raske meeles pidada.
Kasutusmeetod Makefile aitas meil luua kiire ja lihtsa suhtluse faili konteineritega docker-compose.yml. Nimelt rÀÀgime jÀrgmisest:
- Arendaja suhtleb ainult artiklis kirjeldatud projekti konteineritega
docker-compose.yml, tööd ei sega teised jooksvad konteinerid. - Kui teatud kÀsk on ununenud, saate selle kÀsu tÀita
make helpja saada abi saadaolevate kĂ€skude kohta. - Te ei pea meeles pidama pikki argumentide loendeid, et teha selliseid toiminguid nagu uusimate logikirjete hankimine vĂ”i sĂŒsteemi sisselogimine. NĂ€iteks kĂ€sk nagu
docker-compose -f docker-compose.yml exec timescale psql -Upostgresmuutubmake db-shell. - fail
MakefileSaate sellega paindlikult kohaneda projekti kasvades. NÀiteks on lihtne lisada kÀsku andmebaasi varukoopia loomiseks vÔi mÔne muu toimingu tegemiseks. - Kui suur arendajate meeskond kasutab sama
Makefile, muudab see koostööd sujuvamaks ja vÀhendab vigu.
PS Meie pilt on olemas , mille saab installida ĂŒhe klĂ”psuga. Konteinerite tööd saate kontrollida aadressil . KĂ”ikidele uutele klientidele antakse 3 pĂ€eva tasuta testimist.
Kallid lugejad! Kuidas automatiseerite Docker Compose'i?
Allikas: www.habr.com
