Docker Compose: Fa'afaigofie lau Galuega Fa'aaogā Makefiles

O nai tausaga uma lava, o le atinaʻeina o polokalama faʻapitoa e faʻatautaia se suiga faʻatusa. O se tasi o nei mea iloga e mafai ona iloa o le faʻatupulaia o le fiafia i le manatu o microservices. E ui lava o microservices e le o se tekonolosi fou, ae na o le taimi nei na matua maualuga ai lona lauiloa.

Ole tele monolithic 'au'aunaga ua suia nei e tuto'atasi, tuto'atasi microservices. O se microservice e mafai ona mafaufauina o se talosaga e fa'atino ai se fa'amoemoe e tasi ma fa'apitoa. Mo se faʻataʻitaʻiga, e mafai ona avea ma fesoʻotaʻiga DBMS, se Express application, se Solr service.

Docker Compose: Fa'afaigofie lau Galuega Fa'aaogā Makefiles

O nei aso, e faigata ona mafaufau i le atinaʻeina o se polokalama fou polokalama e aunoa ma le faʻaogaina o microservices. Ma o lenei tulaga, i le isi itu, e taʻitaʻia ai i matou i le Docker platform.

Docker

Laulau Docker, i le atinaʻeina ma le faʻapipiʻiina o microservices, ua toetoe lava o se tulaga faʻapisinisi. I luga o le upega tafaʻilagi o le poloketi e mafai ona e iloa ai o Docker e naʻo le pau lea o faʻasalalauga tutoʻatasi e mafai ai e faʻalapotopotoga ona faia ma le faʻaogaina soʻo se talosaga, faʻapea foʻi ma tufatufa atu ma faʻatautaia i soʻo se siosiomaga - mai le hybrid clouds i le pito.

Faila Faʻamau

Technology Faila Faʻamau fuafuaina mo le fa'atulagaina o talosaga e tele-container. O se poloketi Docker Compose e mafai ona aofia ai le tele o koneteina Docker e pei ona mana'omia e le tagata na faia le poloketi.

A e galue ma Docker Compose, e faʻaaogaina se faila YAML e faʻapipiʻi ai auaunaga faʻaoga ma faʻatulaga a latou fegalegaleaiga ma isi. O le mea lea o le Docker Compose o se meafaigaluega mo le faʻamatalaina ma le faʻaogaina o talosaga Docker tele-container.

Docker Compose: Fa'afaigofie lau Galuega Fa'aaogā Makefiles
E lua koneteina o loʻo taʻavale i luga o se polokalama talimalo

GNU Faia

Le polokalama make, o le mea moni lava o se meafaigaluega mo le faʻaogaina otometi le fausiaina o polokalame ma faletusi mai faʻamatalaga puna. I se tulaga lautele, e mafai ona tatou faapea atu make e fa'atatau i so'o se fa'agasologa e aofia ai le fa'atinoina o fa'atonuga fa'apitoa e fa'aliliu ai nisi mea e tu'uina atu i totonu o se isi fomu, i se sini. I lo tatou tulaga, o poloaiga docker-compose o le a liua i ni sini fa'apitoa (Telefoni sini).

E taʻu atu i le polokalame make e uiga i mea matou te mananaʻo mai ai, matou te manaʻomia se faila Makefile.

I la matou Makefile o le a aofia ai poloaiga masani docker и docker-compose, lea ua mamanuina e foia ai le tele o faafitauli. O lona uiga, o loʻo matou talanoa e uiga i le faʻapipiʻiina o se atigipusa, e uiga i le amataina, taofi, toe faʻafouina, e uiga i le faʻatulagaina o tagata e ulufale i totonu o le koneteina, e uiga i le galue i ogalaau pusa, ma e uiga i le foia o isi faʻafitauli tutusa.

Tulaga Fa'aoga masani mo Docker Compose

Sei o tatou mafaufau i se 'upega tafaʻilagi masani e iai vaega nei:

  • TimescaleDB database (Postgres).
  • Express.js talosaga.
  • Ping (na'o se koneteina, e le faia se mea fa'apitoa).

O lenei talosaga e manaʻomia 3 Docker containers ma se faila docker-compose, o lo'o iai fa'atonuga mo le fa'afoeina o nei koneteina. O atigipusa ta'itasi o le ai ai fa'aoga eseese. Mo se faʻataʻitaʻiga, faʻatasi ma se koneteina timescale o le a mafai ona galulue i le auala tutusa e pei ona latou galulue ma databases. O lona uiga, e mafai ai ona e faia gaioiga nei:

  • Ulufale i totonu o le atigi Postgres.
  • Fa'aulufale mai ma le auina atu i fafo o laulau.
  • Fausia pg_dump laulau po'o fa'amaumauga.

Express.js pusa talosaga, expressjs, e mafai ona i ai tulaga nei:

  • Tuuina atu o faʻamatalaga fou mai le log system.
  • Ulufale i le atigi e faʻatino ai ni faʻatonuga.

Fegalegaleai ma Containers

A maeʻa ona matou faʻatulagaina fesoʻotaʻiga i le va o koneteina e faʻaaoga ai Docker Compose, ua oʻo i le taimi e fesoʻotaʻi ai ma na koneteina. I totonu o le Docker Compose system o loʻo i ai se faʻatonuga docker-compose, lagolago filifiliga -f, lea e mafai ai ona e faʻafeiloaʻi se faila i le faiga docker-compose.yml.

I le faʻaaogaina o gafatia o lenei filifiliga, e mafai ona e faʻatapulaʻaina fegalegaleaiga ma le faiga naʻo na koneteina o loʻo taʻua i le faila. docker-compose.yml.

Se'i o tatou va'ava'ai pe fa'aa ni fegalegaleaiga ma pusa pe'a fa'aaoga tulafono docker-compose. Afai tatou te manatu e tatau ona tatou ulufale i totonu o le atigi psql, ona foliga mai lea o tulafono e fetaui ma lenei:

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

O le poloaiga lava e tasi e le faʻaaogaina e faʻatino ai docker-composema docker, atonu e pei o lenei:

docker exec -it  edp_timescale_1 psql -Upostgres

Faamolemole ia matau i tulaga faapea e sili atu le faaaogaina o le poloaiga docker, ma le au docker-compose, aua o lenei mea e faʻaumatia ai le manaʻoga e manatua igoa o pusa.

O poloaiga uma e lua i luga e le faigata tele. Ae afai matou te faʻaaogaina se "afifi" i le pepa Makefile, lea o le a tuʻuina mai ai ia i matou se faʻaoga i le tulaga o ni faʻatonuga faigofie ma o le a ia taʻua foʻi ni faʻatonuga umi, ona mafai lea ona ausia tutusa taunuuga e pei o lenei:

make db-shell

E matua manino lava le faʻaaogaina Makefile fa'afaigofieina le galue ma pusa!

Fa'ata'ita'iga galue

Faʻavae i luga o le ata o loʻo i luga, matou te fatuina le faila lea 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

Ina ia pulea le Docker Compose configuration ma fegalegaleai ma pusa o loʻo faʻamatalaina, matou te fatuina le faila lea 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

Ole tele o fa'atonuga o lo'o fa'amatalaina iinei e fa'aoga i koneteina uma, ae fa'aaoga le filifiliga c= fa'atagaina oe e fa'atapula'a le lautele o se fa'atonuga i se pusa e tasi.

Mavae Makefile sauni, e mafai ona e faʻaogaina e pei o lenei:

  • make help — tuuina atu se lisi o poloaiga uma e avanoa mo make.

Docker Compose: Fa'afaigofie lau Galuega Fa'aaogā Makefiles
Fesoasoani i poloaiga e maua

  • make build - fa'apotopotoina se ata mai Dockerfile. I la matou faʻataʻitaʻiga na matou faʻaogaina ata o loʻo iai timescale и ping. Ae o le ata api matou te fia aoina i le lotoifale. O le mea tonu lava lea o le a faia pe a uma ona faʻatino lenei poloaiga.

Docker Compose: Fa'afaigofie lau Galuega Fa'aaogā Makefiles
Fausia se pusa Docker

  • make start - fa'alauiloa uma pusa. Ina ia faʻalauiloa naʻo le tasi pusa, e mafai ona e faʻaogaina se faʻatonuga pei make start c=timescale.

Docker Compose: Fa'afaigofie lau Galuega Fa'aaogā Makefiles
Fa'agaoioi le koneteina taimi

Docker Compose: Fa'afaigofie lau Galuega Fa'aaogā Makefiles
Ta'avale se koneteina ping

  • make login-timescale - saini i le sauniga bash o le pusa timescale.

Docker Compose: Fa'afaigofie lau Galuega Fa'aaogā Makefiles
Ta'avale bash i totonu o se koneteina taimi

  • make db-shell - ulufale atu i psql i totonu o se koneteina timescale e fa'atino fesili SQL e faasaga i fa'amaumauga.

Docker Compose: Fa'afaigofie lau Galuega Fa'aaogā Makefiles
Ta'avale psql i totonu o se pusa timescaledb

  • make stop - taofi pusa.

Docker Compose: Fa'afaigofie lau Galuega Fa'aaogā Makefiles
Taofi se koneteina taimi

  • make down - taofi ma aveese pusa. Ina ia aveese se atigipusa patino, e mafai ona e faʻaogaina lenei faʻatonuga e faʻamaonia ai le pusa manaʻomia. Faataitaiga - make down c=timescale poʻo make down c=api.

Docker Compose: Fa'afaigofie lau Galuega Fa'aaogā Makefiles
Taofi ma tape uma pusa

O taunuʻuga

E ui ina aumai e Docker Compose ia i tatou se seti mauoa o poloaiga mo le puleaina o pusa, o nisi taimi e mafai ona umi ma faigata nei poloaiga ona manatua.

Auala e fa'aoga ai Makefile na fesoasoani ia i matou e faʻatuina ni fegalegaleaiga vave ma faigofie ma pusa mai se faila docker-compose.yml. O lona uiga, o loʻo matou talanoa e uiga i mea nei:

  • E fegalegaleai le tagata atia'e ma na'o koneteina o poloketi o lo'o fa'amatalaina i totonu docker-compose.yml, galuega e le fa'alavelaveina e isi koneteina tamo'e.
  • Afai e galo se poloaiga, e mafai ona e faia le poloaiga make help ma maua se fesoasoani i fa'atonuga avanoa.
  • E te le mana'omia ni lisi uumi o finauga e fai ai gaioiga e pei o le mauaina o fa'amaumauga lata mai po'o le saini i totonu o se faiga. Mo se faʻataʻitaʻiga, o se faʻatonuga pei docker-compose -f docker-compose.yml exec timescale psql -Upostgres liliu atu i make db-shell.
  • faila Makefile E mafai ona e fetuutuuna'i i ai a'o tuputupu ae le poloketi. Mo se faʻataʻitaʻiga, e faigofie le faʻaopoopoina o se faʻatonuga e fatu ai se faʻamaumauga faʻamaumauga pe faia soʻo se isi gaioiga.
  • Afai o se vaega tele o tagata atiae e faʻaaogaina tutusa Makefile, e fa'afaigofie ai le galulue fa'atasi ma fa'aitiitia mea sese.

SALA I la matou maketi e iai se ata Docker, lea e mafai ona faʻapipiʻi i le kiliki e tasi. E mafai ona e siaki le faagaoioiga o containers i VPS. O tagata fou uma e tu'uina atu 3 aso o su'ega e leai se totogi.

Lau faitau le au faitau! E faʻafefea ona e faʻaogaina le Docker Compose?

Docker Compose: Fa'afaigofie lau Galuega Fa'aaogā Makefiles

puna: www.habr.com

Faaopoopo i ai se faamatalaga