I-Docker Compose: Ukwenza lula umsebenzi wakho usebenzisa i-Makefiles

Njalo eminyakeni embalwa, imboni yokuthuthukiswa kwesofthiwe iba noshintsho lwepharadigm. Esinye salezi zimo singabonwa njengentshisekelo ekhulayo kumqondo wezinsizakalo ezincane. Yize ama-microservices engebona ubuchwepheshe obusha kakhulu, muva nje ukuthandwa kwawo kunyuke kakhulu.

Izinsizakalo ezinkulu ze-monolithic manje sezithathelwa indawo yizinsizakalo ezincane ezizimele, ezizimele. I-microservice ingacatshangwa njengohlelo lokusebenza olufeza injongo eyodwa futhi ecaciswe kakhulu. Isibonelo, kungaba i-DBMS ehlobene, uhlelo lokusebenza lwe-Express, isevisi ye-Solr.

I-Docker Compose: Ukwenza lula umsebenzi wakho usebenzisa i-Makefiles

Kulezi zinsuku, kunzima ukucabanga ukuthuthukisa uhlelo olusha lwesofthiwe ngaphandle kokusebenzisa ama-microservices. Futhi lesi simo, futhi, sisiholela endaweni yesikhulumi se-Docker.

Docker

Platform Docker, ekuthuthukisweni nasekusabalaliseni ama-microservices, sekucishe kube izinga lemboni. Kuwebhusayithi yephrojekthi ungathola ukuthi i-Docker ukuphela kwenkundla ezimele yokufaka iziqukathi evumela izinhlangano ukuthi zenze kalula noma yiluphi uhlelo lokusebenza, futhi zisabalalise futhi ziziqhube kunoma iyiphi indawo - ukusuka kumafu ayingxube kuya ezinhlelweni ezisemaphethelweni.

I-Docker Ukubhala

Ubuchwepheshe I-Docker Ukubhala yakhelwe ukumisa izinhlelo zokusebenza ezineziqukathi eziningi. Iphrojekthi ye-Docker Compose ingaqukatha iziqukathi eziningi ze-Docker njengoba umdali wephrojekthi edinga.

Lapho usebenza ne-Docker Compose, ifayela le-YAML lisetshenziselwa ukulungisa izinsiza zohlelo lokusebenza nokuhlela ukusebenzisana kwazo. Ngakho-ke i-Docker Compose iyithuluzi lokuchaza nokusebenzisa izinhlelo zokusebenza ze-Docker ezineziqukathi eziningi.

I-Docker Compose: Ukwenza lula umsebenzi wakho usebenzisa i-Makefiles
Iziqukathi ezimbili ezisebenza kusistimu yokusingatha

I-GNU Yenza

Uhlelo make, empeleni iyithuluzi lokuzenzakalela ukwakhiwa kwezinhlelo nemitapo yolwazi kusuka kukhodi yomthombo. Ngokuvamile, singasho lokho make kusebenza kunoma iyiphi inqubo ebandakanya ukwenza imiyalo engafanele ukuguqula izinto zokufakwayo zibe uhlobo oluthile lokuphumayo, zibe umgomo othile. Esimweni sethu, imiyalo docker-compose izoguqulwa ibe yizinjongo ezingabonakali (Izingcingo eziqondiwe).

Ukutshela uhlelo make mayelana nokuthi sifunani kuyo, sidinga ifayela Makefile.

Kuwethu Makefile izoqukatha imiyalo ejwayelekile docker ΠΈ docker-compose, eziklanyelwe ukuxazulula izinkinga eziningi. Okungukuthi, sikhuluma ngokuhlanganisa isitsha, ngokusiqala, ukusimisa, ukusiqala kabusha, mayelana nokuhlela ukungena ngemvume komsebenzisi esitsheni, mayelana nokusebenza ngezingodo zesitsha, nokuxazulula ezinye izinkinga ezifanayo.

Amacala Okusetshenziswa Okujwayelekile Wokuqamba Kwe-Docker

Ake sicabange uhlelo lokusebenza lwewebhu olujwayelekile olunalezi zingxenye ezilandelayo:

  • Isizindalwazi se-TimescaleDB (Postgres).
  • Isicelo se-Express.js.
  • I-Ping (isitsha nje, ayenzi lutho olukhethekile).

Lolu hlelo lokusebenza luzodinga iziqukathi ze-Docker ezi-3 nefayela docker-compose, equkethe imiyalelo yokuphatha lezi zitsha. Isiqukathi ngasinye sizoba nezindawo zokuthinta ezihlukile. Isibonelo, ngesitsha timescale kuzokwazi ukusebenza cishe ngendlela efanayo njengoba besebenza nesizindalwazi. Okungukuthi, ikuvumela ukuthi wenze lezi zenzo ezilandelayo:

  • Ukungena kugobolondo le-Postgres.
  • Ukungenisa nokuthekelisa amathebula.
  • indalo pg_dump amathebula noma isizindalwazi.

Isitsha sesicelo se-Express.js, expressjs, ingaba nalawa makhono alandelayo:

  • Ukunikeza idatha entsha evela kulogi yesistimu.
  • Ngena kugobolondo ukuze wenze imiyalo ethile.

Ukusebenzisana neziqukathi

Uma sesimise ukuxhumana phakathi kweziqukathi ezisebenzisa i-Docker Compose, sekuyisikhathi sokuxhumana nalezo ziqukathi. Ngaphakathi kohlelo lwe-Docker Compose kunomyalo docker-compose, inketho esekelayo -f, okuvumela ukuthi udlulisele ifayela ohlelweni docker-compose.yml.

Usebenzisa amandla ale nketho, ungakhawulela ukusebenzisana nesistimu kuphela kulezo ziqukathi ezishiwo efayeleni. docker-compose.yml.

Ake sibheke ukuthi ukusebenzisana neziqukathi kubukeka kanjani uma usebenzisa imiyalo docker-compose. Uma sicabanga ukuthi sidinga ukungena kugobolondo psql, khona-ke imiyalo ehambisanayo ingase ibukeke kanje:

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

Umyalo ofanayo ongasetshenziselwa ukwenza docker-compose, futhi docker, ingase ibukeke kanje:

docker exec -it  edp_timescale_1 psql -Upostgres

Sicela uqaphele ukuthi ezimweni ezinjalo kungcono ngaso sonke isikhathi ukusebenzisa umyalo docker, kanye nomyalo docker-compose, njengoba lokhu kuqeda isidingo sokukhumbula amagama ezitsheni.

Yomibili le miyalo engenhla ayinzima kangako. Kodwa uma sisebenzise "i-wrapper" efomini Makefile, okungasinikeza isixhumi esibonakalayo ngendlela yemiyalo elula futhi ngokwayo ebibiza imiyalo emide efanayo, bese imiphumela efanayo ingafinyelelwa ngale ndlela:

make db-shell

Kusobala ukuthi ukusetshenziswa Makefile kwenza ukusebenza ngeziqukathi kube lula kakhulu!

Isibonelo esisebenzayo

Ngokusekelwe kumdwebo wephrojekthi ongenhla, sizodala ifayela elilandelayo 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

Ukuphatha ukucushwa kwe-Docker Compose futhi uxhumane neziqukathi ezichazayo, sizodala ifayela elilandelayo 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

Iningi lemiyalo echazwe lapha isebenza kuzo zonke iziqukathi, kodwa kusetshenziswa inketho c= ikuvumela ukuthi ukhawulele ububanzi bomyalelo esitsheni esisodwa.

Emva Makefile isilungile, ungayisebenzisa kanje:

  • make help β€” ukukhishwa kohlu lwayo yonke imiyalo etholakalayo make.

I-Docker Compose: Ukwenza lula umsebenzi wakho usebenzisa i-Makefiles
Usizo emiyalweni etholakalayo

  • make build - ukuhlanganisa isithombe kusuka Dockerfile. Esibonelweni sethu sasebenzisa izithombe ezikhona timescale ΠΈ ping. Kodwa isithombe api sifuna ukuqoqa endaweni. Yilokhu kanye okuzokwenziwa ngemva kokwenza lo myalo.

I-Docker Compose: Ukwenza lula umsebenzi wakho usebenzisa i-Makefiles
Ukwakha isitsha se-Docker

  • make start - ukwethula zonke iziqukathi. Ukuze uqalise isiqukathi esisodwa nje, ungasebenzisa umyalo onjengawo make start c=timescale.

I-Docker Compose: Ukwenza lula umsebenzi wakho usebenzisa i-Makefiles
Ukuqalisa isitsha sesikali sesikhathi

I-Docker Compose: Ukwenza lula umsebenzi wakho usebenzisa i-Makefiles
Ukugijima isitsha se-ping

  • make login-timescale - ngena ku-bash session yesitsha timescale.

I-Docker Compose: Ukwenza lula umsebenzi wakho usebenzisa i-Makefiles
Ukugijima i-bash esitsheni se-timescale

  • make db-shell - ukungena ku psql esitsheni timescale ukwenza imibuzo ye-SQL ngokumelene nesizindalwazi.

I-Docker Compose: Ukwenza lula umsebenzi wakho usebenzisa i-Makefiles
Isebenzisa i-psql esitsheni se-timescaledb

  • make stop - izitsha zokumisa.

I-Docker Compose: Ukwenza lula umsebenzi wakho usebenzisa i-Makefiles
Ukumisa isitsha sesikali sesikhathi

  • make down β€” Ukumisa kanye nokukhipha iziqukathi. Ukuze ususe isitsha esithile, ungasebenzisa lo myalo ucacisa isiqukathi osifunayo. Ngokwesibonelo - make down c=timescale noma make down c=api.

I-Docker Compose: Ukwenza lula umsebenzi wakho usebenzisa i-Makefiles
Ukumisa nokususa zonke iziqukathi

Imiphumela

Yize i-Docker Compose isinika isethi yemiyalo ecebile yokuphatha iziqukathi, kwesinye isikhathi le miyalo ingaba yinde futhi kube nzima ukuyikhumbula.

Indlela yokusebenzisa Makefile usisize ukuthi siqale ukuxhumana okusheshayo nokulula neziqukathi ezivela kufayela docker-compose.yml. Okungukuthi, sikhuluma ngalokhu okulandelayo:

  • Unjiniyela usebenzisana kuphela neziqukathi zephrojekthi ezichazwe kuyo docker-compose.yml, umsebenzi awuphazanyiswa ezinye iziqukathi ezigijimayo.
  • Esimeni lapho umyalo othile ukhohliwe, ungakwazi ukukhipha umyalo make help futhi uthole usizo emiyalweni etholakalayo.
  • Akudingekile ukuthi ukhumbule uhlu olude lwama-agumenti ukuze wenze izenzo ezinjengokuthola ukufakwa kwamalogu kwakamuva noma ukungena ohlelweni. Ngokwesibonelo, umyalo like docker-compose -f docker-compose.yml exec timescale psql -Upostgres iphenduka ibe make db-shell.
  • Π€Π°ΠΉΠ» Makefile Ungakwazi ukuzivumelanisa nezimo lapho iphrojekthi ikhula. Isibonelo, kulula ukwengeza umyalo ukuze udale ikhophi yasenqolobaneni noma wenze esinye isenzo.
  • Uma ithimba elikhulu labathuthukisi lisebenzisa okufanayo Makefile, lokhu kwenza kube lula ukusebenzisana futhi kunciphisa amaphutha.

PS Kuwethu indawo yemakethe kukhona isithombe Docker, engafakwa ngokuchofoza okukodwa. Ungahlola ukusebenza kweziqukathi ku VPS. Wonke amaklayenti amasha anikezwa izinsuku ezi-3 zokuhlolwa mahhala.

Bafundi abathandekayo! Uyenza kanjani i-Docker Compose ngokuzenzakalelayo?

I-Docker Compose: Ukwenza lula umsebenzi wakho usebenzisa i-Makefiles

Source: www.habr.com

Engeza amazwana