Docker Compose: Kurerutsa Basa Rako Uchishandisa Makefiles

Makore mashoma ega ega, iyo software yekuvandudza indasitiri inopinda paradigm shanduko. Chimwe chezviitiko izvi chinogona kucherechedzwa sekufarira kuri kukura mune pfungwa ye microservices. Kunyangwe microservices isiri iyo tekinoroji nyowani, ichangopfuura mukurumbira wayo wakakwira chaizvo.

Mahombe monolithic masevhisi ave kutsiviwa neakazvimirira, anozvimiririra mamicroservices. Iyo microservice inogona kufungidzirwa sechishandiso chinoshanda chimwechete uye chakanyanya chinangwa chinangwa. Semuenzaniso, inogona kunge iri yehukama DBMS, Express application, Solr sevhisi.

Docker Compose: Kurerutsa Basa Rako Uchishandisa Makefiles

Mazuva ano, zvakaoma kufungidzira kugadzira software nyowani pasina kushandisa microservices. Uye mamiriro aya, zvakare, anotitungamira kuDocker chikuva.

Docker

Platform Docker, mukuvandudza uye kutumirwa kwemicroservices, yave inenge chiyero cheindasitiri. Pawebhusaiti yeprojekiti iwe unogona kuona kuti Docker ndiyo yega yakazvimiririra yekuisa midziyo papuratifomu inobvumira masangano kuti aite nesimba kugadzira chero application, pamwe nekugovera uye nekuamhanyisa mune chero nharaunda - kubva kumakore akasanganiswa kusvika kumasisitimu emupendero.

Docker Kudzora

Technology Docker Kudzora yakagadzirirwa kugadzirisa akawanda-container application. Iyo Docker Compose purojekiti inogona kuve nemidziyo yakawanda yeDocker sezvinodiwa nemugadziri weprojekiti.

Paunenge uchishanda neDocker Compose, iyo YAML faira inoshandiswa kugadzirisa masevhisi ekushandisa uye kuronga kudyidzana kwavo nemumwe. Docker Compose saka chishandiso chekutsanangura uye nekumhanyisa multi-container Docker application.

Docker Compose: Kurerutsa Basa Rako Uchishandisa Makefiles
Zvigubhu zviviri zvinomhanya pane host system

GNU Gadzira

Purogiramu make, chinhu chakakosha chishandiso chekugadzira otomatiki kuvaka kwezvirongwa uye maraibhurari kubva kusource code. Kazhinji, tinogona kutaura izvozvo make inoshanda kune chero maitiro anosanganisira kuita zvisina tsarukano mirairo yekushandura zvimwe zvinhu zvekupinza kuita imwe fomu yekuburitsa kune chimwe chinangwa. Kana tiri isu, mirairo docker-compose ichashandurwa kuita zvinangwa zvisingaoneki (Zvinangwa zvefoni).

Kuudza chirongwa make nezvezvatinoda kubva pazviri, tinoda faira Makefile.

Mune yedu Makefile ichava nemirairo yenguva dzose docker ΠΈ docker-compose, izvo zvakagadzirirwa kugadzirisa matambudziko mazhinji. Sezvineiwo, tiri kutaura nezve kuunganidza mudziyo, nezve kutanga, kuimisa, kuitangazve, nezve kuronga mushandisi kupinda mumudziyo, nezve kushanda nematanda emidziyo, uye nezve kugadzirisa mamwe matambudziko akafanana.

Yakajairika Kushandisa Makesi eDocker Compose

Ngatimbofungidzirai yenguva dzose yewebhu application ine zvinotevera zvikamu:

  • TimescaleDB dhatabhesi (Postgres).
  • Express.js application.
  • Ping (chirongo chete, hachiite chero chinhu chakakosha).

Ichi chishandiso chinoda 3 Docker midziyo uye faira docker-compose, iyo ine mirairo yekutarisira midziyo iyi. Chigaba chega chega chichava nematanho akasiyana. Somuenzaniso, nemudziyo timescale zvinokwanisika kushanda nenzira imwechete sezvavanoshanda nedatabase. Kureva, inobvumidza iwe kuita zvinotevera zviito:

  • Kupinda muPostgres shell.
  • Kupinza uye kutumira kunze kwematafura.
  • zvisikwa pg_dump matafura kana dhatabhesi.

Express.js application mudziyo, expressjs, inogona kunge iine zvinotevera kugona:

  • Kupa data nyowani kubva kune system log.
  • Pinda kune shell kuti uite mimwe mirairo.

Kudyidzana neContainers

Kana tangomisa kutaurirana pakati pemidziyo uchishandisa Docker Compose, yave nguva yekutaurirana nemidziyo iyoyo. Mukati meDocker Compose system pane murairo docker-compose, kutsigira sarudzo -f, iyo inokubvumira kuendesa faira kune system docker-compose.yml.

Uchishandisa kugona kweiyi sarudzo, unogona kudzikamisa kudyidzana nehurongwa chete kune izvo midziyo inotaurwa mufaira. docker-compose.yml.

Ngatitarisei kuti kusangana nemidziyo kunoratidzika sei kana uchishandisa mirairo docker-compose. Kana isu tichifungidzira kuti isu tinofanirwa kupinda mugomba psql, ipapo mirairo inoenderana inogona kutaridzika seizvi:

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

Murairo mumwechete usingashandiswe kuita docker-composeuye docker, inogona kutaridzika seizvi:

docker exec -it  edp_timescale_1 psql -Upostgres

Ndapota cherechedza kuti mumamiriro ezvinhu akadaro zvinogara zviri nani kushandisa murairo docker, uye murayiro docker-compose, sezvo izvi zvinobvisa kukosha kwekuyeuka mazita emidziyo.

Mirairo miviri iri pamusoro haina kuoma kudaro. Asi kana takashandisa "wrapper" muchimiro Makefile, iyo yaizotipa chinongedzo muchimiro chemirairo yakapusa uye iyo pachayo inodaidza yakafanana mirairo refu, zvino mibairo mimwechete inogona kuwanikwa seizvi:

make db-shell

Zviri pachena kuti kushandiswa Makefile inoita kuti kushanda nemidziyo kuve nyore!

Muenzaniso wekushanda

Kubva pane iri pamusoro purojekiti dhizaini, isu tichagadzira inotevera faira 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

Kugadzirisa iyo Docker Compose kumisikidzwa uye kupindirana nemidziyo yainotsanangura, isu tichagadzira inotevera faira 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

Mizhinji yemirairo inotsanangurwa pano inoshanda kumidziyo yese, asi uchishandisa sarudzo c= inokubvumira kudzikamisa chiyero chemurairo kune imwe mudziyo.

Pashure Makefile yakagadzirira, unogona kuishandisa seizvi:

  • make help - Kuburitsa rondedzero yemirairo yese iripo make.

Docker Compose: Kurerutsa Basa Rako Uchishandisa Makefiles
Rubatsiro pamirairo iripo

  • make build - kuunganidza mufananidzo kubva Dockerfile. Mumuenzaniso wedu takashandisa mifananidzo iripo timescale ΠΈ ping. Asi mufananidzo api tinoda kuunganidza munharaunda. Izvi ndizvo chaizvo zvichaitwa mushure mekuita murairo uyu.

Docker Compose: Kurerutsa Basa Rako Uchishandisa Makefiles
Kuvaka mudziyo weDocker

  • make start - kuburitsa midziyo yese. Kuti utange chigadziko chimwe chete, unogona kushandisa rairo senge make start c=timescale.

Docker Compose: Kurerutsa Basa Rako Uchishandisa Makefiles
Kumhanyisa mudziyo wenguva

Docker Compose: Kurerutsa Basa Rako Uchishandisa Makefiles
Kumhanyisa mudziyo weping

  • make login-timescale - pinda kune bash chikamu chemudziyo timescale.

Docker Compose: Kurerutsa Basa Rako Uchishandisa Makefiles
Kumhanya bash mugaba renguva

  • make db-shell - kupinda psql mumudziyo timescale kuita SQL mibvunzo inopesana ne database.

Docker Compose: Kurerutsa Basa Rako Uchishandisa Makefiles
Kumhanya psql mugaba retimescaledb

  • make stop β€” kumisa midziyo.

Docker Compose: Kurerutsa Basa Rako Uchishandisa Makefiles
Kumisa chigadziko chenguva

  • make down β€” kumisa nekubvisa midziyo. Kuti ubvise imwe mudziyo, unogona kushandisa murairo uyu uchitsanangura mudziyo waunoda. Semuyenzaniso - make down c=timescale kana make down c=api.

Docker Compose: Kurerutsa Basa Rako Uchishandisa Makefiles
Kumisa nekudzima midziyo yese

Migumisiro

Kunyangwe Docker Compose inotipa yakapfuma seti yemirairo yekugadzirisa midziyo, dzimwe nguva iyi mirairo inogona kureba uye yakaoma kurangarira.

Nzira yekushandisa Makefile yakatibatsira kumisikidza nekukurumidza uye nyore kudyidzana nemidziyo kubva mufaira docker-compose.yml. Zvikurukuru, tiri kutaura pamusoro pezvinotevera:

  • Mugadziri anodyidzana chete nemidziyo yeprojekiti inotsanangurwa mukati docker-compose.yml, basa haripindirwe nemamwe macontainer ekumhanya.
  • Muchiitiko chekuti mumwe murairo wakakanganwa, unogona kuita murairo make help uye uwane rubatsiro pamirairo iripo.
  • Haufanire kuyeuka runyorwa rurefu rwenharo kuti uite zviito zvakaita sekuwana ichangoburwa zvinyorwa zvelogi kana kupinda muhurongwa. Somuenzaniso, murairo wakafanana docker-compose -f docker-compose.yml exec timescale psql -Upostgres inoshanduka kuva make db-shell.
  • faira Makefile Iwe unogona kuchinjika kuchinjika kwairi sezvo purojekiti inokura. Semuenzaniso, zviri nyore kuwedzera murairo kugadzira dhatabhesi yekuchengetedza kana kuita chero chimwe chiito.
  • Kana boka guru revagadziri rinoshandisa zvakafanana Makefile, izvi zvinogadzirisa kubatana uye zvinoderedza kukanganisa.

PS Mune yedu marketplace pane mufananidzo Docker, iyo inogona kuiswa nekudzvanya kumwe chete. Unogona kutarisa kushanda kwemidziyo pa VPS. Vese vatengi vatsva vanopihwa mazuva matatu ekuedzwa pasina muripo.

Vanodiwa vaverengi! Iwe unoita sei otomatiki Docker Compose?

Docker Compose: Kurerutsa Basa Rako Uchishandisa Makefiles

Source: www.habr.com

Voeg