Isaky ny taona vitsivitsy, ny indostrian'ny fampivoarana rindrambaiko dia mandalo fiovana paradigma. Ny iray amin'ireo tranga ireo dia azo ekena fa mitombo ny fahalianana amin'ny foto-kevitry ny microservices. Na dia tsy teknolojia vaovao indrindra aza ny microservices, vao haingana ihany no nitombo ara-bakiteny ny lazany.
Ny serivisy monolitika lehibe dia nosoloina serivisy micro tsy miankina sy tsy miankina. Ny microservice dia azo raisina ho toy ny fampiharana izay manana tanjona tokana sy voafaritra manokana. Ohatra, mety ho DBMS mifandray, fampiharana Express, serivisy Solr.
Amin'izao andro izao, sarotra ny maka sary an-tsaina ny famolavolana rafitra rindrambaiko vaovao tsy mampiasa microservices. Ary ity toe-javatra ity indray dia mitondra antsika any amin'ny sehatra Docker.
Docker
sehatra
Docker Compose
teknolojia
Rehefa miara-miasa amin'ny Docker Compose dia misy rakitra YAML ampiasaina hanamboarana serivisy fampiharana sy handaminana ny fifandraisan'izy ireo. Noho izany, ny Docker Compose dia fitaovana iray hamaritana sy fampandehanana ny rindranasa Docker marobe.
Kaontenera roa mandeha amin'ny rafitra mpampiantrano
GNU Manaova
Ny fandaharana make
, dia tena fitaovana ho an'ny automatique ny fananganana programa sy tranomboky avy amin'ny kaody loharano. Amin'ny ankapobeny dia afaka milaza izany isika make
mihatra amin'ny dingana rehetra misy ny fanatanterahana baiko tsy misy dikany mba hanovana ny fitaovana fampidirana sasany ho endrika famoahana sasany, ho tanjona sasany. Aminay, ny baiko docker-compose
hovana ho tanjona tsy hita maso (
Mba lazao ny programa make
momba izay tadiavintsika amin'izany dia mila rakitra isika Makefile
.
Ao amintsika Makefile
dia ahitana baiko mahazatra docker
ΠΈ docker-compose
, izay natao hamahana olana maro. Izany hoe, miresaka momba ny fanangonana kaontenera isika, momba ny fanombohana azy, ny fampitsaharana azy, ny famerenana azy indray, ny fandaminana ny fidirana amin'ny mpampiasa amin'ny kaontenera, ny momba ny fiasana amin'ny diarin'ny container, ary ny famahana olana hafa mitovy amin'izany.
Fampiasana mahazatra ho an'ny Docker Compose
Alao sary an-tsaina ny fampiharana tranonkala mahazatra izay manana ireto singa manaraka ireto:
- Database TimescaleDB (Postgres).
- Fampiharana Express.js.
- Ping (kaontenera fotsiny, tsy manao zavatra manokana).
Ity fampiharana ity dia mila kaontenera Docker 3 sy rakitra iray docker-compose
, izay misy toromarika momba ny fitantanana ireo kaontenera ireo. Ny kaontenera tsirairay dia hanana toerana hifandraisana samihafa. Ohatra, miaraka amin'ny kaontenera timescale
azo atao ny miasa mitovy amin'ny fiasan'izy ireo amin'ny angon-drakitra. Izany hoe, mamela anao hanao ireto hetsika manaraka ireto:
- Midira ao amin'ny shell Postgres.
- Fanafarana sy fanondranana latabatra.
- zavaboary
pg_dump
tabilao na angon-drakitra.
fitoeran'entana fampiharana Express.js, expressjs
, dia mety manana ireto fahaiza-manao manaraka ireto:
- Fanomezana angona vaovao avy amin'ny diarin'ny rafitra.
- Midira ao amin'ny shell mba hanatanteraka baiko sasany.
Fifandraisana amin'ny Containers
Raha vantany vao nametraka fifandraisana eo amin'ny kaontenera mampiasa Docker Compose isika, fotoana izao hifandraisana amin'ireo kaontenera ireo. Ao anatin'ny rafitra Docker Compose dia misy baiko docker-compose
, safidy fanohanana -f
, izay ahafahanao mamindra rakitra amin'ny rafitra docker-compose.yml
.
Amin'ny fampiasana ny fahaiza-manaon'ity safidy ity dia azonao atao ny mametra ny fifandraisana amin'ny rafitra ho an'ireo kaontenera voalaza ao amin'ny rakitra ihany. docker-compose.yml
.
Andeha hojerentsika hoe tahaka ny ahoana ny fifaneraserana amin'ny kaontenera rehefa mampiasa baiko docker-compose
. Raha mieritreritra isika fa mila miditra amin'ny shell psql
, dia mety ho toy izao ny baiko mifanaraka aminy:
docker-compose -f docker-compose.yml exec timescale psql -Upostgres
Ny baiko mitovy izay tsy ampiasaina amin'ny fanatanterahana docker-compose
ary docker
, mety ho toy izao:
docker exec -it edp_timescale_1 psql -Upostgres
Mariho fa amin'ny tranga toy izany dia aleo foana ny mampiasa ny baiko docker
, ary ny baiko docker-compose
, satria manafoana ny filΓ na fitadidiana anarana fitoeran-javatra izany.
Tsy dia sarotra loatra ireo baiko roa ireo. Fa raha mampiasa "wrapper" amin'ny endrika Makefile
, izay hanome antsika interface tsara amin'ny endrika baiko tsotra ary hiantso baiko lava mitovy amin'izany, dia mety ho tratra ny vokatra mitovy amin'izany:
make db-shell
Mazava ho azy fa ny fampiasana Makefile
manamora kokoa ny fiasana amin'ny kaontenera!
Ohatra miasa
Mifototra amin'ny kisary tetik'asa etsy ambony, hamorona ity rakitra manaraka ity izahay 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
Mba hitantanana ny fanitsiana Docker Compose sy hifaneraserana amin'ireo fitoeran-javatra voalazany dia hamorona ity rakitra manaraka ity izahay 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
Ny ankamaroan'ny baiko voalaza eto dia mihatra amin'ny kaontenera rehetra, fa mampiasa ny safidy c=
mamela anao hametra ny sahan'ny baiko ho fitoeran-javatra iray.
taorian'ny Makefile
vonona, azonao ampiasaina toy izao:
make help
- famoahana ny lisitry ny baiko rehetra misymake
.
Fanampiana amin'ny baiko misy
make build
- fanangonana sary avy amin'nyDockerfile
. Amin'ny ohatra asehontsika dia nampiasa sary efa misy izahaytimescale
ΠΈping
. Fa ny saryapi
te hanangona eto an-toerana izahay. Izany indrindra no hatao aorian'ny fanatanterahana io baiko io.
Manangana container Docker
make start
- fandefasana ny kaontenera rehetra. Mba hanombohana kaontenera iray monja dia azonao atao ny mampiasa baiko toymake start c=timescale
.
Fampandehanana ny kaontenera ara-potoana
Mandeha kaontenera ping
make login-timescale
- midira ao amin'ny session bash an'ny containertimescale
.
Mandeha bash ao anaty fitoeran'ny fotoana
make db-shell
- fidirana amin'nypsql
anaty fitoeran-javatra iraytimescale
manatanteraka fangatahana SQL amin'ny angon-drakitra.
Mandeha psql ao anaty container timescaledb
make stop
- fijanonana kaontenera.
Atsaharo ny kaontenera ara-potoana
make down
- fampiatoana sy fanalana kaontenera. Mba hanesorana fitoeran-javatra manokana dia azonao ampiasaina ity baiko ity manondro ny fitoeran-javatra irina. Ohatra -make down c=timescale
namake down c=api
.
Atsaharo sy fafana ny kaontenera rehetra
vokatra
Na dia manome baiko be dia be amin'ny fitantanana container aza ny Docker Compose, indraindray dia mety ho lasa lava sy sarotra ny mitadidy ireo baiko ireo.
Fomba fampiasana Makefile
nanampy anay hanangana fifandraisana haingana sy mora amin'ny kaontenera avy amin'ny rakitra docker-compose.yml
. Izany hoe, miresaka momba ireto manaraka ireto isika:
- Ny mpandrindra dia tsy mifandray afa-tsy amin'ireo kaontenera tetikasa voalaza ao
docker-compose.yml
, tsy voasakantsakan'ny kaontenera mandeha hafa ny asa. - Raha misy baiko adino dia azonao atao ny manatanteraka ilay baiko
make help
ary mahazo fanampiana amin'ny baiko misy. - Tsy mila mitadidy lisitr'ireo tohan-kevitra lava ianao raha te hanao hetsika toy ny fahazoana ny fidirana amin'ny log farany na ny fidirana ao anaty rafitra. Ohatra, baiko toy ny
docker-compose -f docker-compose.yml exec timescale psql -Upostgres
mivadika homake db-shell
. - rakitra
Makefile
Azonao atao ny mampifanaraka azy io rehefa mitombo ny tetikasa. Ohatra, mora ny manampy baiko hamorona backup database na hanao hetsika hafa. - Raha toa ny ekipa lehibe ny developer mampiasa mitovy
Makefile
, manamora ny fiaraha-miasa izany ary mampihena ny lesoka.
Sal Ao amintsika
Ry mpamaky malala! Ahoana ny fomba automatique Docker Compose?
Source: www.habr.com