Docker Compose: Iji Makefiles mee ka ọrụ gị dị mfe

N'afọ ole na ole ọ bụla, ụlọ ọrụ mmepe ngwanrọ na-enwe mgbanwe mgbanwe. Enwere ike ịmata otu n'ime ihe ndị a dị ka mmasị na-eto eto na echiche nke obere ọrụ. Ọ bụ ezie na microservices abụghị teknụzụ kachasị ọhụrụ, naanị n'oge na-adịbeghị anya ka ewu ewu ya rịgoro n'ụzọ nkịtị.

A na-eji ọrụ microservices nọọrọ onwe ya dochie nnukwu ọrụ monolithic ugbu a. Enwere ike iche na microservice dị ka ngwa na-arụ otu ebumnuche na nke akọwapụtara nke ọma. Dịka ọmụmaatụ, ọ nwere ike ịbụ DBMS mmekọrịta, ngwa Express, ọrụ Solr.

Docker Compose: Iji Makefiles mee ka ọrụ gị dị mfe

Ụbọchị ndị a, o siri ike iche n'echiche ịmepụta usoro ngwanrọ ọhụrụ na-ejighị microservices. Na ọnọdụ a, n'aka nke ya, na-eduga anyị na ikpo okwu Docker.

Docker

Platform Docker, na mmepe na ntinye nke microservices, aghọwo ihe fọrọ nke nta ka ọ bụrụ ọkọlọtọ ụlọ ọrụ. Na webụsaịtị ọrụ ị nwere ike ịchọpụta na Docker bụ naanị ikpo okwu nwere onwe nke na-enye ndị otu aka imepụta ngwa ọ bụla na-enweghị ike, yana kesaa ma na-agba ọsọ na gburugburu ebe ọ bụla - site na igwe ojii ngwakọ ruo na sistem.

Docker Dezie

Technology Docker Dezie emebere maka ịhazi ngwa ngwa ọtụtụ akpa. Ihe Docker Compose nwere ike ịnwe ọtụtụ akpa Docker dị ka onye mepụtara ọrụ ahụ chọrọ.

Mgbe gị na Docker Compose na-arụ ọrụ, a na-eji faịlụ YAML hazie ọrụ ngwa yana hazie mmekọrịta ha na ibe ha. Docker Compose bụ ngwa ọrụ maka ịkọwa na iji ngwa Docker nwere ọtụtụ akpa.

Docker Compose: Iji Makefiles mee ka ọrụ gị dị mfe
Akpa abụọ na-arụ ọrụ na sistemụ nnabata

GNU Mee

Usoro ihe omume ahụ make, bụ n'ezie ngwá ọrụ maka akpaghị aka na-ewu mmemme na ụlọ akwụkwọ si koodu isi mmalite. N'ozuzu, anyị nwere ike ikwu nke ahụ make na-emetụta usoro ọ bụla nke gụnyere imezu iwu aka ike iji gbanwee ụfọdụ ihe ntinye ka ọ bụrụ ụdị mmepụta, gaa na ebumnuche ụfọdụ. N'ọnọdụ anyị, iwu docker-compose a ga-agbanwe ka ọ bụrụ ebumnuche nkịtị (Ebumnuche ekwentị).

Iji gwa mmemme make banyere ihe anyị chọrọ site na ya, anyị chọrọ faịlụ Makefile.

Na nke anyi Makefile ga-enwe iwu mgbe niile docker и docker-compose, nke e mere iji dozie ọtụtụ nsogbu. Ya bụ, anyị na-ekwu maka ikpokọta akpa, banyere ịmalite ya, ịkwụsị ya, ịmalitegharị ya, banyere ịhazi nbanye onye ọrụ na akpa ahụ, banyere ịrụ ọrụ na ndekọ akpa, na iji dozie nsogbu ndị ọzọ yiri ya.

Akpa eji eme ihe maka Docker dere

Ka anyị were were were ngwa webụ oge niile nwere ihe ndị a:

  • TimecaleDB nchekwa data (Postgres).
  • ngwa Express.js.
  • Ping (naanị akpa, anaghị eme ihe ọ bụla pụrụ iche).

Ngwa a ga-achọ akpa Docker 3 na faịlụ docker-compose, nke nwere ntuziaka maka ijikwa arịa ndị a. Akpa ọ bụla ga-enwe ebe mmetụ aka dị iche iche. Dị ka ihe atụ, na akpa timescale ọ ga-ekwe omume ịrụ ọrụ dịka otu ha si arụ ọrụ na ọdụ data. Ya bụ, ọ na-enye gị ohere ime omume ndị a:

  • Ịbanye n'ime shei Postgres.
  • Bubata na mbupụ tebụl.
  • kere eke pg_dump tebụl ma ọ bụ ọdụ data.

Ngwa ngwa Express.js, expressjs, nwere ike inwe ikike ndị a:

  • Na-enye data ọhụrụ sitere na ndekọ sistemụ.
  • Banye na shei iji mebie ụfọdụ iwu.

Mmekọrịta na arịa

Ozugbo anyị melitela nkwukọrịta n'etiti arịa site na iji Docker Compose, oge eruola ka gị na arịa ndị ahụ kparịta ụka. N'ime usoro Docker Compose enwere iwu docker-compose, na-akwado nhọrọ -f, nke na-enye gị ohere ịnyefe faịlụ na sistemụ docker-compose.yml.

N'iji ike nke nhọrọ a, ị nwere ike igbochi mmekọrịta na usoro naanị na arịa ndị ahụ edepụtara na faịlụ ahụ. docker-compose.yml.

Ka anyị leba anya n'ihe mmekọrịta na arịa dị ka mgbe ị na-eji iwu docker-compose. Ọ bụrụ na anyị chere na anyị kwesịrị ịbanye n'ime shei psql, mgbe ahụ iwu ndị kwekọrọ nwere ike ịdị ka nke a:

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

Otu iwu nke anaghị eji eme ya docker-composena docker, nwere ike ịdị ka nke a:

docker exec -it  edp_timescale_1 psql -Upostgres

Biko mara na n'ọnọdụ ndị dị otú ahụ ọ na-aka mma mgbe niile iji iwu ahụ docker, na otu docker-compose, dị ka nke a na-ewepụ mkpa icheta akpa aha.

Iwu abụọ a dị n'elu adịghị esi ike. Ma ọ bụrụ na anyị na-eji "wrapper" n'ụdị Makefile, nke ga-enye anyị interface n'ụdị iwu dị mfe ma n'onwe ya na-akpọ ogologo iwu ogologo oge, mgbe ahụ enwere ike nweta otu nsonaazụ ahụ dị ka nke a:

make db-shell

Ọ bụ nnọọ doro anya na ojiji Makefile na-eme ka iji arịa rụọ ọrụ dị mfe karị!

Ihe atụ na-arụ ọrụ

Dabere na eserese ọrụ dị n'elu, anyị ga-emepụta faịlụ na-esonụ 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

Iji jikwaa nhazi Docker Compose ma soro arịa ndị ọ kọwara na-emekọrịta ihe, anyị ga-emepụta faịlụ na-esote 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

Ọtụtụ n'ime iwu ndị akọwara ebe a na-emetụta arịa niile, mana iji nhọrọ c= na-enye gị ohere ịmachi oke nke iwu na otu akpa.

Emechaa Makefile njikere, ị nwere ike iji ya dị ka nke a:

  • make help - inye ndepụta iwu niile dị maka make.

Docker Compose: Iji Makefiles mee ka ọrụ gị dị mfe
Enyemaka na iwu dị

  • make build - agbakọta ihe oyiyi si Dockerfile. N'ihe atụ anyị, anyị ji ihe oyiyi dị adị timescale и ping. Ma oyiyi api anyị chọrọ ịnakọta na mpaghara. Nke a bụ kpọmkwem ihe a ga-eme ma emechaa iwu a.

Docker Compose: Iji Makefiles mee ka ọrụ gị dị mfe
Iwuli akpa Docker

  • make start - na-ebupụta arịa niile. Iji malite naanị otu akpa, ịnwere ike iji iwu dịka make start c=timescale.

Docker Compose: Iji Makefiles mee ka ọrụ gị dị mfe
Na-agba ọsọ akpa oge

Docker Compose: Iji Makefiles mee ka ọrụ gị dị mfe
Na-agba ọsọ akpa ping

  • make login-timescale - nbanye na bash nnọkọ nke akpa timescale.

Docker Compose: Iji Makefiles mee ka ọrụ gị dị mfe
Na-agba ọsọ bash n'ime akpa oge

  • make db-shell - ọnụ ụzọ psql n'ime akpa timescale iji mezuo ajụjụ SQL megide nchekwa data.

Docker Compose: Iji Makefiles mee ka ọrụ gị dị mfe
Na-agba ọsọ psql n'ime akpa timescaledb

  • make stop - nkwụsị akpa.

Docker Compose: Iji Makefiles mee ka ọrụ gị dị mfe
Ịkwụsị akpa oge

  • make down - ịkwụsị na iwepu arịa. Iji wepụ otu akpa, ị nwere ike iji iwu a na-akọwapụta akpa achọrọ. Ọmụmaatụ - make down c=timescale ma ọ bụ make down c=api.

Docker Compose: Iji Makefiles mee ka ọrụ gị dị mfe
Ịkwụsị na ihichapụ akpa niile

Nsonaazụ

Agbanyeghị na Docker Compose na-enye anyị ọtụtụ iwu maka ijikwa arịa, mgbe ụfọdụ iwu ndị a nwere ike ịdị ogologo ma sie ike icheta.

Usoro eji Makefile nyeere anyị aka ịmepụta mmekọrịta ngwa ngwa na ngwa ngwa na arịa sitere na faịlụ docker-compose.yml. Ya bụ, anyị na-ekwu maka ihe ndị a:

  • Onye nrụpụta na-emekọrịta ihe naanị na igbe ọrụ akọwara na ya docker-compose.yml, ọrụ ndị ọzọ na-agba ọsọ anaghị egbochi ọrụ.
  • Ọ bụrụ na echefuru ụfọdụ iwu, ị nwere ike ịme iwu ahụ make help ma nweta enyemaka na iwu dị.
  • Ịkwesighi icheta ogologo ndepụta arụmụka iji mee omume dị ka ịnweta ndenye ndekọ kachasị ọhụrụ ma ọ bụ ịbanye na sistemụ. Dịka ọmụmaatụ, iwu dịka docker-compose -f docker-compose.yml exec timescale psql -Upostgres tụgharịa n'ime make db-shell.
  • file Makefile Ị nwere ike ime mgbanwe na ya ka ọrụ ahụ na-etolite. Dịka ọmụmaatụ, ọ dị mfe ịgbakwunye iwu ka ịmepụta ndabere nchekwa data ma ọ bụ mee ihe ọ bụla ọzọ.
  • Ọ bụrụ na nnukwu ìgwè ndị mmepe na-eji otu ihe ahụ Makefile, nke a na-eme ka mmekọ ọnụ ma na-ebelata njehie.

PS Na nke anyi ahịa enwere onyonyo Docker, nke enwere ike itinye n'otu pịa. Ị nwere ike ịlele ọrụ nke containers na VPS. A na-enye ndị ahịa ọhụrụ niile ụbọchị 3 nnwale n'efu.

Ezigbo ndị na-agụ akwụkwọ! Kedu ka esi eme Docker Compose?

Docker Compose: Iji Makefiles mee ka ọrụ gị dị mfe

isi: www.habr.com

Tinye a comment