Docker Compose: Kufewetsa Ntchito Yanu Pogwiritsa Ntchito Makefiles

Zaka zingapo zilizonse, makampani opanga mapulogalamu amasintha paradigm. Chimodzi mwazinthu izi zitha kuzindikirika ngati chidwi chokulirapo pamalingaliro a microservices. Ngakhale ma microservices siukadaulo waposachedwa kwambiri, posachedwapa kutchuka kwake kwakwera kwambiri.

Ntchito zazikulu za monolithic tsopano zasinthidwa ndi ma microservices odziyimira pawokha. Microservice imatha kuganiziridwa ngati ntchito yomwe imakhala ndi cholinga chimodzi komanso chachindunji. Mwachitsanzo, itha kukhala DBMS yolumikizana, ntchito ya Express, ntchito ya Solr.

Docker Compose: Kufewetsa Ntchito Yanu Pogwiritsa Ntchito Makefiles

Masiku ano, ndizovuta kulingalira kupanga pulogalamu yatsopano popanda kugwiritsa ntchito ma microservices. Ndipo izi, zimatifikitsa ku nsanja ya Docker.

Docker

Platform Docker, pakupanga ndi kutumizidwa kwa ma microservices, wakhala pafupifupi muyezo wamakampani. Patsamba la projekiti mutha kudziwa kuti Docker ndiye njira yokhayo yodziyimira yokha yomwe imalola mabungwe kuti azitha kupanga ntchito iliyonse, komanso kugawa ndikuwayendetsa pamalo aliwonse - kuchokera pamtambo wosakanizidwa mpaka machitidwe am'mphepete.

Docker Kulemba

umisiri Docker Kulemba zokonzedwa kuti zikhazikitse mapulogalamu amitundu yambiri. Pulojekiti ya Docker Compose imatha kukhala ndi zotengera zambiri za Docker monga momwe wopanga polojekiti amafunira.

Mukamagwira ntchito ndi Docker Compose, fayilo ya YAML imagwiritsidwa ntchito kukonza ntchito zofunsira ndikukonzekera kuyanjana kwawo. Docker Compose ndiye chida chofotokozera ndikuyendetsa mapulogalamu a Docker okhala ndi zida zambiri.

Docker Compose: Kufewetsa Ntchito Yanu Pogwiritsa Ntchito Makefiles
Zotengera ziwiri zomwe zikuyenda pa dongosolo la alendo

GNU Pangani

Pulogalamuyo make, ndi chida chothandizira kupanga mapulogalamu ndi malaibulale kuchokera pama code code. Mwambiri, tinganene kuti make imagwira ntchito panjira iliyonse yomwe imaphatikizapo kulamula mosasamala kuti asinthe zida zolowetsa kukhala mawonekedwe ena otulutsa, ku cholinga china. Kwa ife, malamulo docker-compose zidzasinthidwa kukhala zolinga zosamveka (Zolinga zamafoni).

Kuwuza pulogalamu make pa zomwe tikufuna kuchokera pamenepo, tikufuna fayilo Makefile.

mu wathu Makefile adzakhala ndi malamulo okhazikika docker ΠΈ docker-compose, zomwe zapangidwa kuti zithetse mavuto ambiri. Mwakutero, tikulankhula za kusonkhanitsa chidebe, kuyambitsa, kuyimitsa, kuyiyambitsanso, kukonza zolowera mumtsuko, zakugwira ntchito ndi zipika za chidebe, komanso kuthana ndi mavuto ena ofanana.

Milandu Yodziwika Yogwiritsa Ntchito Docker Compose

Tiyerekezere pulogalamu yapaintaneti yomwe ili ndi zigawo izi:

  • TimescaleDB database (Postgres).
  • Express.js ntchito.
  • Ping (chidebe chokha, sichichita chilichonse chapadera).

Izi zidzafunika zotengera 3 za Docker ndi fayilo docker-compose, yomwe ili ndi malangizo oyendetsera zotengerazi. Chidebe chilichonse chimakhala ndi ma touchpoints osiyanasiyana. Mwachitsanzo, ndi chidebe timescale zidzatheka kugwira ntchito mofanana ndi momwe amagwirira ntchito ndi nkhokwe. Izi, zimakupatsani mwayi wochita izi:

  • Kulowa mu chipolopolo cha Postgres.
  • Kulowetsa ndi kutumiza kunja kwa matebulo.
  • chilengedwe pg_dump matebulo kapena database.

Express.js application chidebe, expressjs, ikhoza kukhala ndi izi:

  • Kupereka deta yatsopano kuchokera ku chipika chadongosolo.
  • Lowani ku chipolopolo kuti mupereke malamulo ena.

Kulumikizana ndi Containers

Titakhazikitsa kulumikizana pakati pa zotengera pogwiritsa ntchito Docker Compose, ndi nthawi yolumikizana ndi zotengerazo. Mkati mwa Docker Compose system pali lamulo docker-compose, njira yothandizira -f, zomwe zimakulolani kusamutsa fayilo ku dongosolo docker-compose.yml.

Pogwiritsa ntchito kuthekera kwa njirayi, mutha kuchepetsa kuyanjana ndi kachitidwe kokha pazotengera zomwe zatchulidwa mufayilo. docker-compose.yml.

Tiyeni tiwone momwe kulumikizana ndi zotengera kumawonekera mukamagwiritsa ntchito malamulo docker-compose. Ngati tikuganiza kuti tiyenera kulowa mu chipolopolo psql, ndiye kuti malamulo ofananira angawoneke motere:

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

Lamulo lomwelo lomwe siligwiritsidwa ntchito pochita docker-composendi docker, zitha kuwoneka motere:

docker exec -it  edp_timescale_1 psql -Upostgres

Chonde dziwani kuti muzochitika zotere ndikwabwino kugwiritsa ntchito lamulo docker, ndi lamulo docker-compose, popeza izi zimachotsa kufunika kokumbukira mayina a ziwiya.

Malamulo onse awiriwa si ovuta. Koma ngati tigwiritsa ntchito "wrapper" mu mawonekedwe Makefile, zomwe zingatipatse mawonekedwe mwamalamulo osavuta komanso omwe angatchule malamulo aatali ofanana, ndiye kuti zotsatira zomwezo zitha kukwaniritsidwa motere:

make db-shell

Ndi zoonekeratu kuti ntchito Makefile zimapangitsa kugwira ntchito ndi zotengera kukhala kosavuta!

Chitsanzo cha ntchito

Kutengera chithunzi cha polojekiti yomwe ili pamwambapa, tipanga fayilo yotsatirayi 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

Kuwongolera kasinthidwe ka Docker Compose ndikulumikizana ndi zotengera zomwe zikufotokozera, tipanga fayilo yotsatirayi 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

Malamulo ambiri omwe afotokozedwa apa amagwira ntchito pazotengera zonse, koma pogwiritsa ntchito njirayo c= amakulolani kuchepetsa kukula kwa lamulo ku chidebe chimodzi.

pambuyo Makefile okonzeka, mutha kugwiritsa ntchito motere:

  • make help - kupereka mndandanda wamalamulo onse omwe alipo make.

Docker Compose: Kufewetsa Ntchito Yanu Pogwiritsa Ntchito Makefiles
Thandizo pa malamulo omwe alipo

  • make build - kusonkhanitsa chithunzi kuchokera Dockerfile. Mu chitsanzo chathu tinagwiritsa ntchito zithunzi zomwe zilipo kale timescale ΠΈ ping. Koma chithunzi api tikufuna kusonkhanitsa kwathu. Izi ndi zomwe zidzachitike pambuyo potsatira lamuloli.

Docker Compose: Kufewetsa Ntchito Yanu Pogwiritsa Ntchito Makefiles
Kupanga chidebe cha Docker

  • make start - kuyambitsa zotengera zonse. Kuti mutsegule chidebe chimodzi chokha, mutha kugwiritsa ntchito lamulo ngati make start c=timescale.

Docker Compose: Kufewetsa Ntchito Yanu Pogwiritsa Ntchito Makefiles
Kuthamangitsa chotengera cha nthawi

Docker Compose: Kufewetsa Ntchito Yanu Pogwiritsa Ntchito Makefiles
Kuthamanga chidebe cha ping

  • make login-timescale - lowani ku gawo la bash la chidebecho timescale.

Docker Compose: Kufewetsa Ntchito Yanu Pogwiritsa Ntchito Makefiles
Kuthamanga bash mu chidebe cha nthawi

  • make db-shell - polowera ku psql mu chidebe timescale kuyankha mafunso a SQL motsutsana ndi database.

Docker Compose: Kufewetsa Ntchito Yanu Pogwiritsa Ntchito Makefiles
Kuthamanga psql mu chidebe cha timescaledb

  • make stop - kuyimitsa zotengera.

Docker Compose: Kufewetsa Ntchito Yanu Pogwiritsa Ntchito Makefiles
Kuyimitsa chidebe cha nthawi

  • make down - kuyimitsa ndi kuchotsa zotengera. Kuti muchotse chidebe china, mutha kugwiritsa ntchito lamulo ili pofotokoza chidebe chomwe mukufuna. Mwachitsanzo - make down c=timescale kapena make down c=api.

Docker Compose: Kufewetsa Ntchito Yanu Pogwiritsa Ntchito Makefiles
Kuyimitsa ndi kuchotsa zotengera zonse

Zotsatira

Ngakhale Docker Compose amatipatsa malamulo ambiri oyendetsera zotengera, nthawi zina malamulowa amatha kukhala aatali komanso ovuta kukumbukira.

Njira yogwiritsira ntchito Makefile zidatithandiza kukhazikitsa kulumikizana mwachangu komanso kosavuta ndi zotengera kuchokera pafayilo docker-compose.yml. Mwakutero, tikulankhula za izi:

  • Wopanga mapulogalamu amangolumikizana ndi zotengera zomwe zafotokozedwamo docker-compose.yml, ntchito simasokonezedwa ndi zotengera zina zothamanga.
  • Ngati lamulo linalake layiwalika, mukhoza kupereka lamulolo make help ndi kupeza thandizo pa malamulo omwe alipo.
  • Simuyenera kukumbukira mndandanda wautali wa mikangano kuti muchite zinthu monga kupeza zolemba zaposachedwa kapena kulowa mudongosolo. Mwachitsanzo, lamulo ngati docker-compose -f docker-compose.yml exec timescale psql -Upostgres amasanduka make db-shell.
  • file Makefile Mutha kusintha momwe polojekiti ikuyendera. Mwachitsanzo, ndikosavuta kuwonjezera lamulo kuti mupange zosunga zobwezeretsera kapena kuchita china chilichonse.
  • Ngati gulu lalikulu la omanga limagwiritsa ntchito zomwezo Makefile, izi zimathandizira mgwirizano ndikuchepetsa zolakwika.

PS mu wathu msika pali chithunzi Docker, yomwe imatha kukhazikitsidwa ndikudina kamodzi. Mukhoza kuyang'ana ntchito ya muli pa VPS. Makasitomala onse atsopano amapatsidwa masiku atatu akuyezetsa kwaulere.

Wokondedwa owerenga! Kodi mumasinthira bwanji Docker Compose?

Docker Compose: Kufewetsa Ntchito Yanu Pogwiritsa Ntchito Makefiles

Source: www.habr.com

Kuwonjezera ndemanga