O nai tausaga uma lava, o le atinaʻeina o polokalama faʻapitoa e faʻatautaia se suiga faʻatusa. O se tasi o nei mea iloga e mafai ona iloa o le faʻatupulaia o le fiafia i le manatu o microservices. E ui lava o microservices e le o se tekonolosi fou, ae na o le taimi nei na matua maualuga ai lona lauiloa.
Ole tele monolithic 'au'aunaga ua suia nei e tuto'atasi, tuto'atasi microservices. O se microservice e mafai ona mafaufauina o se talosaga e fa'atino ai se fa'amoemoe e tasi ma fa'apitoa. Mo se faʻataʻitaʻiga, e mafai ona avea ma fesoʻotaʻiga DBMS, se Express application, se Solr service.
O nei aso, e faigata ona mafaufau i le atinaʻeina o se polokalama fou polokalama e aunoa ma le faʻaogaina o microservices. Ma o lenei tulaga, i le isi itu, e taʻitaʻia ai i matou i le Docker platform.
Docker
Laulau
Faila Faʻamau
Technology
A e galue ma Docker Compose, e faʻaaogaina se faila YAML e faʻapipiʻi ai auaunaga faʻaoga ma faʻatulaga a latou fegalegaleaiga ma isi. O le mea lea o le Docker Compose o se meafaigaluega mo le faʻamatalaina ma le faʻaogaina o talosaga Docker tele-container.
E lua koneteina o loʻo taʻavale i luga o se polokalama talimalo
GNU Faia
Le polokalama make
, o le mea moni lava o se meafaigaluega mo le faʻaogaina otometi le fausiaina o polokalame ma faletusi mai faʻamatalaga puna. I se tulaga lautele, e mafai ona tatou faapea atu make
e fa'atatau i so'o se fa'agasologa e aofia ai le fa'atinoina o fa'atonuga fa'apitoa e fa'aliliu ai nisi mea e tu'uina atu i totonu o se isi fomu, i se sini. I lo tatou tulaga, o poloaiga docker-compose
o le a liua i ni sini fa'apitoa (
E taʻu atu i le polokalame make
e uiga i mea matou te mananaʻo mai ai, matou te manaʻomia se faila Makefile
.
I la matou Makefile
o le a aofia ai poloaiga masani docker
и docker-compose
, lea ua mamanuina e foia ai le tele o faafitauli. O lona uiga, o loʻo matou talanoa e uiga i le faʻapipiʻiina o se atigipusa, e uiga i le amataina, taofi, toe faʻafouina, e uiga i le faʻatulagaina o tagata e ulufale i totonu o le koneteina, e uiga i le galue i ogalaau pusa, ma e uiga i le foia o isi faʻafitauli tutusa.
Tulaga Fa'aoga masani mo Docker Compose
Sei o tatou mafaufau i se 'upega tafaʻilagi masani e iai vaega nei:
- TimescaleDB database (Postgres).
- Express.js talosaga.
- Ping (na'o se koneteina, e le faia se mea fa'apitoa).
O lenei talosaga e manaʻomia 3 Docker containers ma se faila docker-compose
, o lo'o iai fa'atonuga mo le fa'afoeina o nei koneteina. O atigipusa ta'itasi o le ai ai fa'aoga eseese. Mo se faʻataʻitaʻiga, faʻatasi ma se koneteina timescale
o le a mafai ona galulue i le auala tutusa e pei ona latou galulue ma databases. O lona uiga, e mafai ai ona e faia gaioiga nei:
- Ulufale i totonu o le atigi Postgres.
- Fa'aulufale mai ma le auina atu i fafo o laulau.
- Fausia
pg_dump
laulau po'o fa'amaumauga.
Express.js pusa talosaga, expressjs
, e mafai ona i ai tulaga nei:
- Tuuina atu o faʻamatalaga fou mai le log system.
- Ulufale i le atigi e faʻatino ai ni faʻatonuga.
Fegalegaleai ma Containers
A maeʻa ona matou faʻatulagaina fesoʻotaʻiga i le va o koneteina e faʻaaoga ai Docker Compose, ua oʻo i le taimi e fesoʻotaʻi ai ma na koneteina. I totonu o le Docker Compose system o loʻo i ai se faʻatonuga docker-compose
, lagolago filifiliga -f
, lea e mafai ai ona e faʻafeiloaʻi se faila i le faiga docker-compose.yml
.
I le faʻaaogaina o gafatia o lenei filifiliga, e mafai ona e faʻatapulaʻaina fegalegaleaiga ma le faiga naʻo na koneteina o loʻo taʻua i le faila. docker-compose.yml
.
Se'i o tatou va'ava'ai pe fa'aa ni fegalegaleaiga ma pusa pe'a fa'aaoga tulafono docker-compose
. Afai tatou te manatu e tatau ona tatou ulufale i totonu o le atigi psql
, ona foliga mai lea o tulafono e fetaui ma lenei:
docker-compose -f docker-compose.yml exec timescale psql -Upostgres
O le poloaiga lava e tasi e le faʻaaogaina e faʻatino ai docker-compose
ma docker
, atonu e pei o lenei:
docker exec -it edp_timescale_1 psql -Upostgres
Faamolemole ia matau i tulaga faapea e sili atu le faaaogaina o le poloaiga docker
, ma le au docker-compose
, aua o lenei mea e faʻaumatia ai le manaʻoga e manatua igoa o pusa.
O poloaiga uma e lua i luga e le faigata tele. Ae afai matou te faʻaaogaina se "afifi" i le pepa Makefile
, lea o le a tuʻuina mai ai ia i matou se faʻaoga i le tulaga o ni faʻatonuga faigofie ma o le a ia taʻua foʻi ni faʻatonuga umi, ona mafai lea ona ausia tutusa taunuuga e pei o lenei:
make db-shell
E matua manino lava le faʻaaogaina Makefile
fa'afaigofieina le galue ma pusa!
Fa'ata'ita'iga galue
Faʻavae i luga o le ata o loʻo i luga, matou te fatuina le faila lea 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
Ina ia pulea le Docker Compose configuration ma fegalegaleai ma pusa o loʻo faʻamatalaina, matou te fatuina le faila lea 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
Ole tele o fa'atonuga o lo'o fa'amatalaina iinei e fa'aoga i koneteina uma, ae fa'aaoga le filifiliga c=
fa'atagaina oe e fa'atapula'a le lautele o se fa'atonuga i se pusa e tasi.
Mavae Makefile
sauni, e mafai ona e faʻaogaina e pei o lenei:
make help
— tuuina atu se lisi o poloaiga uma e avanoa momake
.
Fesoasoani i poloaiga e maua
make build
- fa'apotopotoina se ata maiDockerfile
. I la matou faʻataʻitaʻiga na matou faʻaogaina ata o loʻo iaitimescale
иping
. Ae o le ataapi
matou te fia aoina i le lotoifale. O le mea tonu lava lea o le a faia pe a uma ona faʻatino lenei poloaiga.
Fausia se pusa Docker
make start
- fa'alauiloa uma pusa. Ina ia faʻalauiloa naʻo le tasi pusa, e mafai ona e faʻaogaina se faʻatonuga peimake start c=timescale
.
Fa'agaoioi le koneteina taimi
Ta'avale se koneteina ping
make login-timescale
- saini i le sauniga bash o le pusatimescale
.
Ta'avale bash i totonu o se koneteina taimi
make db-shell
- ulufale atu ipsql
i totonu o se koneteinatimescale
e fa'atino fesili SQL e faasaga i fa'amaumauga.
Ta'avale psql i totonu o se pusa timescaledb
make stop
- taofi pusa.
Taofi se koneteina taimi
make down
- taofi ma aveese pusa. Ina ia aveese se atigipusa patino, e mafai ona e faʻaogaina lenei faʻatonuga e faʻamaonia ai le pusa manaʻomia. Faataitaiga -make down c=timescale
poʻomake down c=api
.
Taofi ma tape uma pusa
O taunuʻuga
E ui ina aumai e Docker Compose ia i tatou se seti mauoa o poloaiga mo le puleaina o pusa, o nisi taimi e mafai ona umi ma faigata nei poloaiga ona manatua.
Auala e fa'aoga ai Makefile
na fesoasoani ia i matou e faʻatuina ni fegalegaleaiga vave ma faigofie ma pusa mai se faila docker-compose.yml
. O lona uiga, o loʻo matou talanoa e uiga i mea nei:
- E fegalegaleai le tagata atia'e ma na'o koneteina o poloketi o lo'o fa'amatalaina i totonu
docker-compose.yml
, galuega e le fa'alavelaveina e isi koneteina tamo'e. - Afai e galo se poloaiga, e mafai ona e faia le poloaiga
make help
ma maua se fesoasoani i fa'atonuga avanoa. - E te le mana'omia ni lisi uumi o finauga e fai ai gaioiga e pei o le mauaina o fa'amaumauga lata mai po'o le saini i totonu o se faiga. Mo se faʻataʻitaʻiga, o se faʻatonuga pei
docker-compose -f docker-compose.yml exec timescale psql -Upostgres
liliu atu imake db-shell
. - faila
Makefile
E mafai ona e fetuutuuna'i i ai a'o tuputupu ae le poloketi. Mo se faʻataʻitaʻiga, e faigofie le faʻaopoopoina o se faʻatonuga e fatu ai se faʻamaumauga faʻamaumauga pe faia soʻo se isi gaioiga. - Afai o se vaega tele o tagata atiae e faʻaaogaina tutusa
Makefile
, e fa'afaigofie ai le galulue fa'atasi ma fa'aitiitia mea sese.
SALA I la matou
Lau faitau le au faitau! E faʻafefea ona e faʻaogaina le Docker Compose?
puna: www.habr.com