Docker Compose: Sauƙaƙe Ayyukanku Ta Amfani da Makefiles

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.

Docker Compose: Sauƙaƙe Ayyukanku Ta Amfani da Makefiles

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, a cikin haɓakawa da ƙaddamar da ƙananan ayyuka, ya zama kusan ma'auni na masana'antu. A kan gidan yanar gizon aikin za ku iya gano cewa Docker shine kawai dandamali mai zaman kansa mai zaman kansa wanda ke ba ƙungiyoyi damar ƙirƙirar kowane aikace-aikacen ba tare da wahala ba, da rarrabawa da gudanar da su a kowane yanayi - daga gajimare masu tasowa zuwa tsarin gefen.

Docker Shirya

Fasaha Docker Shirya tsara don daidaita aikace-aikacen kwantena da yawa. Aikin Docker Compose zai iya ƙunsar kwantena Docker da yawa kamar yadda mahaliccin aikin ke buƙata.

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.

Docker Compose: Sauƙaƙe Ayyukanku Ta Amfani da Makefiles
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 (Makasudin waya).

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-composeda 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 don make.

Docker Compose: Sauƙaƙe Ayyukanku Ta Amfani da Makefiles
Taimako akan samuwa umarni

  • make build - hada hoto daga Dockerfile. A cikin misalinmu mun yi amfani da hotunan da ke akwai timescale и ping. Amma hoton api muna son tarawa a gida. Wannan shine ainihin abin da za a yi bayan aiwatar da wannan umarni.

Docker Compose: Sauƙaƙe Ayyukanku Ta Amfani da Makefiles
Gina akwati Docker

  • make start - ƙaddamar da duk kwantena. Don ƙaddamar da ganga ɗaya kawai, zaku iya amfani da umarni kamar make start c=timescale.

Docker Compose: Sauƙaƙe Ayyukanku Ta Amfani da Makefiles
Gudun kwandon lokutan lokutan

Docker Compose: Sauƙaƙe Ayyukanku Ta Amfani da Makefiles
Gudun kwandon ping

  • make login-timescale - shiga cikin zaman bash na akwati timescale.

Docker Compose: Sauƙaƙe Ayyukanku Ta Amfani da Makefiles
Gudun bash a cikin akwati na lokaci

  • make db-shell - ƙofar zuwa psql a cikin akwati timescale don aiwatar da tambayoyin SQL akan database.

Docker Compose: Sauƙaƙe Ayyukanku Ta Amfani da Makefiles
Gudun psql a cikin akwati na lokaci-lokaci

  • make stop - kwantena tsayawa.

Docker Compose: Sauƙaƙe Ayyukanku Ta Amfani da Makefiles
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 ko make down c=api.

Docker Compose: Sauƙaƙe Ayyukanku Ta Amfani da Makefiles
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 cikin make 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 kasuwa akwai hoto Docker, wanda za a iya shigar a cikin dannawa ɗaya. Kuna iya duba aikin kwantena a VPS. Ana ba duk sabbin abokan ciniki kwanaki 3 na gwaji kyauta.

Ya ku masu karatu! Ta yaya kuke sarrafa Docker Compose?

Docker Compose: Sauƙaƙe Ayyukanku Ta Amfani da Makefiles

source: www.habr.com

Add a comment