Kowace ƴan shekaru, masana'antar haɓaka software tana fuskantar canjin yanayi. Ɗaya daga cikin waɗannan abubuwan mamaki ana iya gane shi azaman haɓakar sha'awar ra'ayi na ƙananan sabis. Kodayake microservices ba sabuwar fasaha ba ce, kwanan nan kawai shahararsa ta hauhawa.
Yanzu ana maye gurbin manyan ayyuka na monolithic da ƙananan sabis masu zaman kansu. Ana iya ɗaukar microservice azaman aikace-aikacen da ke aiki guda ɗaya kuma takamaiman manufa. Misali, yana iya zama DBMS na dangantaka, aikace-aikacen Express, sabis na Solr.
A kwanakin nan, yana da wuya a yi tunanin haɓaka sabon tsarin software ba tare da amfani da microservices ba. Kuma wannan yanayin, bi da bi, yana kai mu ga dandalin Docker.
Docker
Platform
Docker Shirya
Fasaha
Lokacin aiki tare da Docker Compose, ana amfani da fayil ɗin YAML don saita ayyukan aikace-aikace da tsara hulɗar su da juna. Don haka Docker Compose kayan aiki ne don siffantawa da gudanar da aikace-aikacen Docker mai yawan kwantena.
Kwantena biyu suna gudana akan tsarin runduna
GNU Sanya
Shirin make
, ainihin kayan aiki ne don sarrafa sarrafa shirye-shirye da ɗakunan karatu daga lambar tushe. Gabaɗaya, za mu iya cewa make
ya shafi kowane tsari wanda ya ƙunshi aiwatar da umarni na sabani don canza wasu kayan shigarwa zuwa wani nau'i na fitarwa, zuwa wani manufa. A cikin yanayinmu, umarni docker-compose
za a rikide zuwa maƙasudin maƙasudi (
Don gaya wa shirin make
game da abin da muke so daga gare ta, muna buƙatar fayil Makefile
.
A cikin namu Makefile
zai ƙunshi umarni na yau da kullun docker
и docker-compose
, wanda aka tsara don magance matsaloli da yawa. Wato, muna magana ne game da haɗa kwantena, game da farawa, dakatar da shi, sake kunna shi, game da tsara shigar da mai amfani a cikin akwati, game da yin aiki tare da katako, da kuma magance wasu matsaloli makamantan haka.
Abubuwan Amfani na Musamman don Rubuta Docker
Bari mu yi tunanin aikace-aikacen gidan yanar gizo na yau da kullun wanda ke da abubuwa masu zuwa:
- TimecaleDB database (Postgres).
- Express.js aikace-aikace.
- Ping (kwanni kawai, baya yin wani abu na musamman).
Wannan aikace-aikacen zai buƙaci kwantena Docker 3 da fayil docker-compose
, wanda ya ƙunshi umarni don sarrafa waɗannan kwantena. Kowane akwati zai sami maki daban-daban. Misali, tare da akwati timescale
zai yiwu a yi aiki kamar yadda suke aiki tare da bayanan bayanai. Wato, yana ba ku damar aiwatar da ayyuka masu zuwa:
- Shiga cikin harsashi na Postgres.
- Shigo da fitarwa na tebur.
- halittar
pg_dump
tebur ko bayanai.
Akwatin aikace-aikacen Express.js, expressjs
, na iya samun iyakoki masu zuwa:
- Samar da sabbin bayanai daga tsarin log ɗin.
- Shiga cikin harsashi don aiwatar da wasu umarni.
Yin hulɗa da Kwantena
Da zarar mun saita sadarwa tsakanin kwantena ta amfani da Docker Compose, lokaci yayi da za a sadarwa tare da waɗancan kwantena. A cikin tsarin Docker Compose akwai umarni docker-compose
, zaɓin tallafi -f
, wanda ke ba ka damar canja wurin fayil zuwa tsarin docker-compose.yml
.
Yin amfani da damar wannan zaɓi, zaku iya iyakance hulɗa tare da tsarin kawai ga waɗannan kwantena waɗanda aka ambata a cikin fayil ɗin. docker-compose.yml
.
Bari mu kalli yadda hulɗa tare da kwantena yayi kama yayin amfani da umarni docker-compose
. Idan muka yi tunanin cewa muna buƙatar shiga cikin harsashi psql
, sannan umarni masu dacewa zasu yi kama da haka:
docker-compose -f docker-compose.yml exec timescale psql -Upostgres
Umurnin guda ɗaya wanda ba a amfani dashi don aiwatarwa docker-compose
da kuma docker
, zai iya zama kamar haka:
docker exec -it edp_timescale_1 psql -Upostgres
Lura cewa a irin waɗannan lokuta yana da kyau koyaushe a yi amfani da umarnin docker
, da umarni docker-compose
, saboda wannan yana kawar da buƙatar tunawa da sunayen kwantena.
Duk waɗannan umarni na sama ba su da wahala haka. Amma idan muka yi amfani da "wrapper" a cikin tsari Makefile
, wanda zai ba mu hanyar sadarwa ta hanyar umarni masu sauƙi kuma da kanta za ta kira dogayen umarni masu kama, to ana iya samun sakamako iri ɗaya kamar haka:
make db-shell
A bayyane yake cewa amfani Makefile
yana sa aiki tare da kwantena mafi sauƙi!
Misalin aiki
Dangane da zanen aikin da ke sama, za mu ƙirƙiri fayil mai zuwa 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
Don sarrafa daidaitawar Docker Compose da yin hulɗa tare da kwantena da ya bayyana, za mu ƙirƙiri fayil mai zuwa 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
Yawancin umarni da aka bayyana anan sun shafi duk kwantena, amma ta amfani da zaɓi c=
yana ba ku damar iyakance iyakar umarni zuwa akwati ɗaya.
bayan da Makefile
shirye, za ku iya amfani da shi kamar haka:
make help
- ba da jerin duk umarnin da aka samu donmake
.
Taimako akan samuwa umarni
make build
- hada hoto dagaDockerfile
. A cikin misalinmu mun yi amfani da hotunan da ke akwaitimescale
иping
. Amma hotonapi
muna son tarawa a gida. Wannan shine ainihin abin da za a yi bayan aiwatar da wannan umarni.
Gina akwati Docker
make start
- ƙaddamar da duk kwantena. Don ƙaddamar da ganga ɗaya kawai, zaku iya amfani da umarni kamarmake start c=timescale
.
Gudun kwandon lokutan lokutan
Gudun kwandon ping
make login-timescale
- shiga cikin zaman bash na akwatitimescale
.
Gudun bash a cikin akwati na lokaci
make db-shell
- ƙofar zuwapsql
a cikin akwatitimescale
don aiwatar da tambayoyin SQL akan database.
Gudun psql a cikin akwati na lokaci-lokaci
make stop
- kwantena tsayawa.
Tsaida kwandon lokaci
make down
- tsayawa da cire kwantena. Don cire takamaiman akwati, zaku iya amfani da wannan umarnin da ke ƙayyade kwandon da ake so. Misali -make down c=timescale
komake down c=api
.
Tsayawa da share duk kwantena
Sakamakon
Kodayake Docker Compose yana ba mu ɗimbin umarni na sarrafa kwantena, wani lokacin waɗannan umarni na iya yin tsayi da wuyan tunawa.
Hanyar amfani Makefile
ya taimake mu kafa hulɗa mai sauri da sauƙi tare da kwantena daga fayil docker-compose.yml
. Wato muna magana ne akan abubuwa kamar haka:
- Mai haɓakawa yana hulɗa tare da kwantenan aikin da aka kwatanta a ciki kawai
docker-compose.yml
, aiki ba ya tsoma baki tare da sauran kwantena masu gudana. - A yayin da aka manta wani takamaiman umarni, zaku iya aiwatar da umarnin
make help
kuma sami taimako akan samuwa umarni. - Ba dole ba ne ka tuna dogayen jerin gardama don aiwatar da ayyuka kamar samun sabbin shigarwar log ko shiga cikin tsarin. Misali, umarni kamar
docker-compose -f docker-compose.yml exec timescale psql -Upostgres
juya cikinmake db-shell
. - fayil
Makefile
Kuna iya daidaita shi da sauƙi yayin da aikin ke girma. Misali, yana da sauƙi don ƙara umarni don ƙirƙirar madadin bayanai ko aiwatar da kowane aiki. - Idan babban ƙungiyar masu haɓakawa suna amfani da iri ɗaya
Makefile
, wannan yana daidaita haɗin gwiwa kuma yana rage kurakurai.
PS A cikin namu
Ya ku masu karatu! Ta yaya kuke sarrafa Docker Compose?
source: www.habr.com