Docker Compose: Manamora ny asanao amin'ny fampiasana Makefiles

Isaky ny taona vitsivitsy, ny indostrian'ny fampivoarana rindrambaiko dia mandalo fiovana paradigma. Ny iray amin'ireo tranga ireo dia azo ekena fa mitombo ny fahalianana amin'ny foto-kevitry ny microservices. Na dia tsy teknolojia vaovao indrindra aza ny microservices, vao haingana ihany no nitombo ara-bakiteny ny lazany.

Ny serivisy monolitika lehibe dia nosoloina serivisy micro tsy miankina sy tsy miankina. Ny microservice dia azo raisina ho toy ny fampiharana izay manana tanjona tokana sy voafaritra manokana. Ohatra, mety ho DBMS mifandray, fampiharana Express, serivisy Solr.

Docker Compose: Manamora ny asanao amin'ny fampiasana Makefiles

Amin'izao andro izao, sarotra ny maka sary an-tsaina ny famolavolana rafitra rindrambaiko vaovao tsy mampiasa microservices. Ary ity toe-javatra ity indray dia mitondra antsika any amin'ny sehatra Docker.

Docker

sehatra Docker, eo amin'ny fampandrosoana sy ny fametrahana ny microservices, dia saika lasa fenitra indostrialy. Ao amin'ny tranokalan'ny tetikasa dia azonao atao ny mahita fa i Docker no hany sehatra fanangonam-bokatra mahaleo tena ahafahan'ny fikambanana mamorona fampiharana mora foana, ary koa mizara sy mampandeha azy ireo amin'ny tontolo rehetra - manomboka amin'ny rahona hybrid ka hatramin'ny rafitra edge.

Docker Compose

teknolojia Docker Compose natao handrindrana ny rindranasa misy kaontenera maro. Ny tetikasa Docker Compose dia mety ahitana kaontenera Docker betsaka araka izay ilain'ny mpamorona ny tetikasa.

Rehefa miara-miasa amin'ny Docker Compose dia misy rakitra YAML ampiasaina hanamboarana serivisy fampiharana sy handaminana ny fifandraisan'izy ireo. Noho izany, ny Docker Compose dia fitaovana iray hamaritana sy fampandehanana ny rindranasa Docker marobe.

Docker Compose: Manamora ny asanao amin'ny fampiasana Makefiles
Kaontenera roa mandeha amin'ny rafitra mpampiantrano

GNU Manaova

Ny fandaharana make, dia tena fitaovana ho an'ny automatique ny fananganana programa sy tranomboky avy amin'ny kaody loharano. Amin'ny ankapobeny dia afaka milaza izany isika make mihatra amin'ny dingana rehetra misy ny fanatanterahana baiko tsy misy dikany mba hanovana ny fitaovana fampidirana sasany ho endrika famoahana sasany, ho tanjona sasany. Aminay, ny baiko docker-compose hovana ho tanjona tsy hita maso (Kendrena finday).

Mba lazao ny programa make momba izay tadiavintsika amin'izany dia mila rakitra isika Makefile.

Ao amintsika Makefile dia ahitana baiko mahazatra docker ΠΈ docker-compose, izay natao hamahana olana maro. Izany hoe, miresaka momba ny fanangonana kaontenera isika, momba ny fanombohana azy, ny fampitsaharana azy, ny famerenana azy indray, ny fandaminana ny fidirana amin'ny mpampiasa amin'ny kaontenera, ny momba ny fiasana amin'ny diarin'ny container, ary ny famahana olana hafa mitovy amin'izany.

Fampiasana mahazatra ho an'ny Docker Compose

Alao sary an-tsaina ny fampiharana tranonkala mahazatra izay manana ireto singa manaraka ireto:

  • Database TimescaleDB (Postgres).
  • Fampiharana Express.js.
  • Ping (kaontenera fotsiny, tsy manao zavatra manokana).

Ity fampiharana ity dia mila kaontenera Docker 3 sy rakitra iray docker-compose, izay misy toromarika momba ny fitantanana ireo kaontenera ireo. Ny kaontenera tsirairay dia hanana toerana hifandraisana samihafa. Ohatra, miaraka amin'ny kaontenera timescale azo atao ny miasa mitovy amin'ny fiasan'izy ireo amin'ny angon-drakitra. Izany hoe, mamela anao hanao ireto hetsika manaraka ireto:

  • Midira ao amin'ny shell Postgres.
  • Fanafarana sy fanondranana latabatra.
  • zavaboary pg_dump tabilao na angon-drakitra.

fitoeran'entana fampiharana Express.js, expressjs, dia mety manana ireto fahaiza-manao manaraka ireto:

  • Fanomezana angona vaovao avy amin'ny diarin'ny rafitra.
  • Midira ao amin'ny shell mba hanatanteraka baiko sasany.

Fifandraisana amin'ny Containers

Raha vantany vao nametraka fifandraisana eo amin'ny kaontenera mampiasa Docker Compose isika, fotoana izao hifandraisana amin'ireo kaontenera ireo. Ao anatin'ny rafitra Docker Compose dia misy baiko docker-compose, safidy fanohanana -f, izay ahafahanao mamindra rakitra amin'ny rafitra docker-compose.yml.

Amin'ny fampiasana ny fahaiza-manaon'ity safidy ity dia azonao atao ny mametra ny fifandraisana amin'ny rafitra ho an'ireo kaontenera voalaza ao amin'ny rakitra ihany. docker-compose.yml.

Andeha hojerentsika hoe tahaka ny ahoana ny fifaneraserana amin'ny kaontenera rehefa mampiasa baiko docker-compose. Raha mieritreritra isika fa mila miditra amin'ny shell psql, dia mety ho toy izao ny baiko mifanaraka aminy:

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

Ny baiko mitovy izay tsy ampiasaina amin'ny fanatanterahana docker-composeary docker, mety ho toy izao:

docker exec -it  edp_timescale_1 psql -Upostgres

Mariho fa amin'ny tranga toy izany dia aleo foana ny mampiasa ny baiko docker, ary ny baiko docker-compose, satria manafoana ny filΓ na fitadidiana anarana fitoeran-javatra izany.

Tsy dia sarotra loatra ireo baiko roa ireo. Fa raha mampiasa "wrapper" amin'ny endrika Makefile, izay hanome antsika interface tsara amin'ny endrika baiko tsotra ary hiantso baiko lava mitovy amin'izany, dia mety ho tratra ny vokatra mitovy amin'izany:

make db-shell

Mazava ho azy fa ny fampiasana Makefile manamora kokoa ny fiasana amin'ny kaontenera!

Ohatra miasa

Mifototra amin'ny kisary tetik'asa etsy ambony, hamorona ity rakitra manaraka ity izahay 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

Mba hitantanana ny fanitsiana Docker Compose sy hifaneraserana amin'ireo fitoeran-javatra voalazany dia hamorona ity rakitra manaraka ity izahay 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

Ny ankamaroan'ny baiko voalaza eto dia mihatra amin'ny kaontenera rehetra, fa mampiasa ny safidy c= mamela anao hametra ny sahan'ny baiko ho fitoeran-javatra iray.

taorian'ny Makefile vonona, azonao ampiasaina toy izao:

  • make help - famoahana ny lisitry ny baiko rehetra misy make.

Docker Compose: Manamora ny asanao amin'ny fampiasana Makefiles
Fanampiana amin'ny baiko misy

  • make build - fanangonana sary avy amin'ny Dockerfile. Amin'ny ohatra asehontsika dia nampiasa sary efa misy izahay timescale ΠΈ ping. Fa ny sary api te hanangona eto an-toerana izahay. Izany indrindra no hatao aorian'ny fanatanterahana io baiko io.

Docker Compose: Manamora ny asanao amin'ny fampiasana Makefiles
Manangana container Docker

  • make start - fandefasana ny kaontenera rehetra. Mba hanombohana kaontenera iray monja dia azonao atao ny mampiasa baiko toy make start c=timescale.

Docker Compose: Manamora ny asanao amin'ny fampiasana Makefiles
Fampandehanana ny kaontenera ara-potoana

Docker Compose: Manamora ny asanao amin'ny fampiasana Makefiles
Mandeha kaontenera ping

  • make login-timescale - midira ao amin'ny session bash an'ny container timescale.

Docker Compose: Manamora ny asanao amin'ny fampiasana Makefiles
Mandeha bash ao anaty fitoeran'ny fotoana

  • make db-shell - fidirana amin'ny psql anaty fitoeran-javatra iray timescale manatanteraka fangatahana SQL amin'ny angon-drakitra.

Docker Compose: Manamora ny asanao amin'ny fampiasana Makefiles
Mandeha psql ao anaty container timescaledb

  • make stop - fijanonana kaontenera.

Docker Compose: Manamora ny asanao amin'ny fampiasana Makefiles
Atsaharo ny kaontenera ara-potoana

  • make down - fampiatoana sy fanalana kaontenera. Mba hanesorana fitoeran-javatra manokana dia azonao ampiasaina ity baiko ity manondro ny fitoeran-javatra irina. Ohatra - make down c=timescale na make down c=api.

Docker Compose: Manamora ny asanao amin'ny fampiasana Makefiles
Atsaharo sy fafana ny kaontenera rehetra

vokatra

Na dia manome baiko be dia be amin'ny fitantanana container aza ny Docker Compose, indraindray dia mety ho lasa lava sy sarotra ny mitadidy ireo baiko ireo.

Fomba fampiasana Makefile nanampy anay hanangana fifandraisana haingana sy mora amin'ny kaontenera avy amin'ny rakitra docker-compose.yml. Izany hoe, miresaka momba ireto manaraka ireto isika:

  • Ny mpandrindra dia tsy mifandray afa-tsy amin'ireo kaontenera tetikasa voalaza ao docker-compose.yml, tsy voasakantsakan'ny kaontenera mandeha hafa ny asa.
  • Raha misy baiko adino dia azonao atao ny manatanteraka ilay baiko make help ary mahazo fanampiana amin'ny baiko misy.
  • Tsy mila mitadidy lisitr'ireo tohan-kevitra lava ianao raha te hanao hetsika toy ny fahazoana ny fidirana amin'ny log farany na ny fidirana ao anaty rafitra. Ohatra, baiko toy ny docker-compose -f docker-compose.yml exec timescale psql -Upostgres mivadika ho make db-shell.
  • rakitra Makefile Azonao atao ny mampifanaraka azy io rehefa mitombo ny tetikasa. Ohatra, mora ny manampy baiko hamorona backup database na hanao hetsika hafa.
  • Raha toa ny ekipa lehibe ny developer mampiasa mitovy Makefile, manamora ny fiaraha-miasa izany ary mampihena ny lesoka.

Sal Ao amintsika -tsena misy sary Docker, izay azo apetraka amin'ny tsindry iray. Azonao atao ny manamarina ny fiasan'ny container amin'ny VPS. Omena 3 andro hanaovana fitiliana maimaim-poana ny mpanjifa vaovao rehetra.

Ry mpamaky malala! Ahoana ny fomba automatique Docker Compose?

Docker Compose: Manamora ny asanao amin'ny fampiasana Makefiles

Source: www.habr.com

Add a comment