Docker Compose: Einfaldaðu vinnu þína með því að nota Makefiles

Á nokkurra ára fresti verður hugmyndafræðibreyting í hugbúnaðarþróunariðnaðinum. Eitt af þessum fyrirbærum má greina sem vaxandi áhugi á hugtakinu örþjónustu. Þrátt fyrir að örþjónusta sé ekki nýjasta tæknin, hafa vinsældir hennar bókstaflega rokið upp aðeins nýlega.

Nú er verið að skipta út stórri einhæfri þjónustu fyrir sjálfstæðar, sjálfstæðar örþjónustur. Líta má á örþjónustu sem forrit sem þjónar einum og mjög sérstökum tilgangi. Til dæmis gæti það verið vensla DBMS, Express forrit, Solr þjónusta.

Docker Compose: Einfaldaðu vinnu þína með því að nota Makefiles

Þessa dagana er erfitt að ímynda sér að þróa nýtt hugbúnaðarkerfi án þess að nota örþjónustur. Og þetta ástand leiðir okkur aftur að Docker pallinum.

Docker

Platform Docker, í þróun og dreifingu örþjónustu, hefur orðið næstum iðnaðarstaðall. Á vefsíðu verkefnisins er hægt að komast að því að Docker er eini óháði gámasvæðið sem gerir stofnunum kleift að búa til hvaða forrit sem er á áreynslulausan hátt, auk þess að dreifa og keyra þau í hvaða umhverfi sem er - allt frá blendingsskýjum til jaðarkerfa.

Docker Compose

Технология Docker Compose hannað til að stilla fjölgámaforrit. Docker Compose verkefni getur innihaldið eins marga Docker gáma og skapari verkefnisins þarf.

Þegar unnið er með Docker Compose er YAML skrá notuð til að stilla forritaþjónustur og skipuleggja samskipti þeirra við hvert annað. Docker Compose er því tæki til að lýsa og keyra Docker forrit með mörgum gáma.

Docker Compose: Einfaldaðu vinnu þína með því að nota Makefiles
Tveir gámar sem keyra á hýsilkerfi

GNU Make

Program make, er í meginatriðum tæki til að gera sjálfvirkan smíði forrita og bókasöfna frá frumkóða. Almennt séð getum við sagt það make á við um hvaða ferli sem er sem felur í sér að framkvæma handahófskenndar skipanir til að umbreyta sumum inntaksefnum í eitthvert úttaksform, að einhverju markmiði. Í okkar tilviki, skipanirnar docker-compose verður umbreytt í óhlutbundin markmið (Símamarkmið).

Til að segja forritinu make um hvað við viljum fá úr því, við þurfum skrá Makefile.

Í okkar Makefile mun innihalda reglulegar skipanir docker и docker-compose, sem eru hönnuð til að leysa mörg vandamál. Við erum nefnilega að tala um að setja saman gám, um að ræsa hann, stöðva hann, endurræsa hann, um að skipuleggja notendainnskráningu á gáminn, um að vinna með gámalogga og um að leysa önnur svipuð vandamál.

Dæmigert notkunartilvik fyrir Docker Compose

Við skulum ímynda okkur venjulegt vefforrit sem hefur eftirfarandi hluti:

  • TimescaleDB gagnagrunnur (Postgres).
  • Express.js forritið.
  • Ping (bara ílát, gerir ekkert sérstakt).

Þetta forrit mun þurfa 3 Docker gáma og skrá docker-compose, sem inniheldur leiðbeiningar um stjórnun þessara gáma. Hver gámur mun hafa mismunandi snertipunkta. Til dæmis með ílát timescale hægt verður að vinna nokkurn veginn á sama hátt og þeir vinna með gagnagrunna. Það gerir þér nefnilega kleift að framkvæma eftirfarandi aðgerðir:

  • Að skrá sig inn í Postgres skelina.
  • Inn- og útflutningur á borðum.
  • sköpun pg_dump töflur eða gagnagrunna.

Express.js forritsílát, expressjs, gæti haft eftirfarandi eiginleika:

  • Að útvega ný gögn úr kerfisskránni.
  • Skráðu þig inn í skelina til að framkvæma ákveðnar skipanir.

Samskipti við gáma

Þegar við höfum sett upp samskipti milli gáma með því að nota Docker Compose, er kominn tími til að hafa samskipti við þá gáma. Innan Docker Compose kerfisins er skipun docker-compose, stuðningsmöguleiki -f, sem gerir þér kleift að flytja skrá yfir í kerfið docker-compose.yml.

Með því að nota möguleika þessa valmöguleika geturðu takmarkað samskipti við kerfið aðeins við þá ílát sem eru nefnd í skránni docker-compose.yml.

Við skulum skoða hvernig samskipti við gáma líta út þegar skipanir eru notaðar docker-compose. Ef við ímyndum okkur að við þurfum að skrá þig inn í skelina psql, þá gætu samsvarandi skipanir litið svona út:

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

Sama skipun og er ekki notuð til að framkvæma docker-composeOg docker, gæti litið svona út:

docker exec -it  edp_timescale_1 psql -Upostgres

Vinsamlegast athugaðu að í slíkum tilvikum er alltaf æskilegt að nota skipunina docker, og skipunina docker-compose, þar sem þetta útilokar þörfina á að muna gámaheiti.

Báðar ofangreindar skipanir eru ekki svo erfiðar. En ef við notuðum „umbúðir“ í formi Makefile, sem myndi gefa okkur viðmót í formi einfaldra skipana og myndi sjálft kalla svipaðar langar skipanir, þá gæti sömu niðurstöður náðst svona:

make db-shell

Það er alveg augljóst að notkun Makefile gerir vinnu með gáma mun auðveldari!

Vinnandi dæmi

Byggt á ofangreindu verkefnismynd, munum við búa til eftirfarandi skrá 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

Til að stjórna Docker Compose stillingunum og hafa samskipti við gámana sem hún lýsir munum við búa til eftirfarandi skrá 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

Flestar skipanirnar sem lýst er hér eiga við um alla gáma, en með því að nota valkostinn c= gerir þér kleift að takmarka umfang skipunar við einn gám.

Eftir Makefile tilbúinn, þú getur notað það svona:

  • make help - gefa út lista yfir allar skipanir sem eru tiltækar fyrir make.

Docker Compose: Einfaldaðu vinnu þína með því að nota Makefiles
Hjálp um tiltækar skipanir

  • make build - að setja saman mynd úr Dockerfile. Í dæminu okkar notuðum við núverandi myndir timescale и ping. En myndin api við viljum safna á staðnum. Þetta er nákvæmlega það sem verður gert eftir að þessi skipun er framkvæmd.

Docker Compose: Einfaldaðu vinnu þína með því að nota Makefiles
Byggja Docker gám

  • make start — ræsa alla gáma. Til að ræsa aðeins einn ílát geturðu notað skipun eins og make start c=timescale.

Docker Compose: Einfaldaðu vinnu þína með því að nota Makefiles
Keyrir tímakvarða gáminn

Docker Compose: Einfaldaðu vinnu þína með því að nota Makefiles
Að keyra ping gám

  • make login-timescale — skráðu þig inn á bash-lotu ílátsins timescale.

Docker Compose: Einfaldaðu vinnu þína með því að nota Makefiles
Hlaupandi bash í tímakvarða ílát

  • make db-shell - inngangur að psql í gámi timescale til að framkvæma SQL fyrirspurnir gegn gagnagrunninum.

Docker Compose: Einfaldaðu vinnu þína með því að nota Makefiles
Keyrir psql í timescaledb gámi

  • make stop — stöðva gáma.

Docker Compose: Einfaldaðu vinnu þína með því að nota Makefiles
Stöðvun tímakvarða gáms

  • make down — stöðva og fjarlægja gáma. Til að fjarlægja tiltekið ílát geturðu notað þessa skipun til að tilgreina viðkomandi ílát. Til dæmis - make down c=timescale eða make down c=api.

Docker Compose: Einfaldaðu vinnu þína með því að nota Makefiles
Stöðva og eyða öllum gámum

Niðurstöður

Þó að Docker Compose gefi okkur mikið sett af skipunum til að stjórna gámum, geta þessar skipanir stundum orðið langar og erfitt að muna þær.

Notkunaraðferð Makefile hjálpaði okkur að koma á skjótum og auðveldum samskiptum við gáma úr skrá docker-compose.yml. Við erum nefnilega að tala um eftirfarandi:

  • Framkvæmdaraðilinn hefur aðeins samskipti við verkefnisílátin sem lýst er í docker-compose.yml, vinnu er ekki truflað af öðrum hlaupandi gámum.
  • Ef ákveðin skipun gleymist geturðu framkvæmt skipunina make help og fáðu aðstoð við tiltækar skipanir.
  • Þú þarft ekki að muna langa lista af rökum til að framkvæma aðgerðir eins og að fá nýjustu skráningarfærslur eða skrá þig inn í kerfi. Til dæmis skipun eins og docker-compose -f docker-compose.yml exec timescale psql -Upostgres breytist í make db-shell.
  • skrá Makefile Þú getur á sveigjanlegan hátt lagað þig að því eftir því sem verkefnið stækkar. Til dæmis er auðvelt að bæta við skipun til að búa til öryggisafrit af gagnagrunni eða framkvæma aðrar aðgerðir.
  • Ef stórt teymi forritara notar það sama Makefile, þetta hagræðir samvinnu og dregur úr villum.

PS Í okkar markaðstorg það er mynd Docker, sem hægt er að setja upp með einum smelli. Hægt er að athuga rekstur gáma á VPS. Allir nýir viðskiptavinir fá 3 daga próf án endurgjalds.

Kæru lesendur! Hvernig gerirðu sjálfvirkan Docker Compose?

Docker Compose: Einfaldaðu vinnu þína með því að nota Makefiles

Heimild: www.habr.com

Bæta við athugasemd