Sgrìobhadh Docker: A’ sìmpleachadh d’ obair le bhith a’ cleachdadh Makefiles

A h-uile beagan bhliadhnaichean, bidh an gnìomhachas leasachadh bathar-bog a’ dol tro atharrachadh paradigm. Faodar aon de na h-uinneanan sin aithneachadh mar an ùidh a tha a’ sìor fhàs ann am bun-bheachd microservices. Ged nach e microservices an teicneòlas as ùire, is ann dìreach o chionn ghoirid a tha fèill mhòr air.

Tha meanbh-sheirbheisean neo-eisimeileach, neo-eisimeileach a-nis gan cur an àite seirbheisean mòra monolithic. Faodar smaoineachadh air microservice mar thagradh a tha a’ frithealadh aon adhbhar sònraichte. Mar eisimpleir, dh’ fhaodadh gur e DBMS dàimheach a th’ ann, tagradh Express, seirbheis Solr.

Sgrìobhadh Docker: A’ sìmpleachadh d’ obair le bhith a’ cleachdadh Makefiles

An-diugh, tha e duilich smaoineachadh air siostam bathar-bog ùr a leasachadh gun a bhith a’ cleachdadh microservices. Agus tha an suidheachadh seo, an uair sin, gar toirt gu àrd-ùrlar Docker.

Docker

Platform Docker, ann an leasachadh agus cleachdadh microservices, air fàs cha mhòr mar ìre gnìomhachais. Air làrach-lìn a’ phròiseict gheibh thu a-mach gur e Docker an aon àrd-ùrlar giùlain neo-eisimeileach a leigeas le buidhnean tagradh sam bith a chruthachadh gun oidhirp, a bharrachd air a bhith gan sgaoileadh agus gan ruith ann an àrainneachd sam bith - bho sgòthan tar-chinealach gu siostaman iomaill.

Companaidh Docker

Teicneòlas Companaidh Docker air a dhealbhadh airson tagraidhean ioma-ghlainne a rèiteachadh. Faodaidh na h-uimhir de shoithichean Docker a bhith ann am pròiseact Docker Compose agus a dh’ fheumas neach-cruthachaidh a ’phròiseict.

Nuair a bhios tu ag obair le Docker Compose, thèid faidhle YAML a chleachdadh gus seirbheisean tagraidh a rèiteachadh agus an eadar-obrachadh le chèile a chuir air dòigh. Mar sin tha Docker Compose na inneal airson cunntas a thoirt air agus ruith thagraidhean Docker ioma-ghlainne.

Sgrìobhadh Docker: A’ sìmpleachadh d’ obair le bhith a’ cleachdadh Makefiles
Dà shoitheach a’ ruith air siostam aoigheachd

Dèan GNU

Am prògram make, gu bunaiteach na inneal airson togail phrògraman agus leabharlannan gu fèin-ghluasadach bho chòd stòr. San fharsaingeachd, faodaidh sinn sin a ràdh make a’ buntainn ri pròiseas sam bith a tha a’ toirt a-steach a bhith a’ cur an gnìomh òrdughan neo-riaghailteach gus cuid de stuthan cuir a-steach atharrachadh gu cruth toraidh air choreigin, gu amas air choireigin. Anns a 'chùis againn, na h-òrdughan docker-compose thèid an atharrachadh gu amasan eas-chruthach (Targaidean fòn).

A innse am prògram make mu na tha sinn ag iarraidh bhuaithe, feumaidh sinn faidhle Makefile.

Anns ar Makefile bidh òrdughan cunbhalach ann docker и docker-compose, a tha air an dealbhadh gus fuasgladh fhaighinn air mòran dhuilgheadasan. Is e sin, tha sinn a 'bruidhinn mu bhith a' cruinneachadh soitheach, mu bhith ga thòiseachadh, ga stad, ga ath-thòiseachadh, mu bhith ag eagrachadh logadh a-steach don ghobhar, mu bhith ag obair le logaichean soitheach, agus mu bhith a 'fuasgladh dhuilgheadasan eile.

Cùisean cleachdaidh àbhaisteach airson Docker Compose

Smaoinichidh sinn air tagradh lìn cunbhalach anns a bheil na pàirtean a leanas:

  • Stòr-dàta TimescaleDB (Postgres).
  • Iarrtas Express.js.
  • Chan eil ping (dìreach soitheach, a 'dèanamh dad sònraichte).

Feumaidh an tagradh seo 3 soithichean Docker agus faidhle docker-compose, anns a bheil stiùireadh airson na soithichean sin a riaghladh. Bidh puingean suathaidh eadar-dhealaichte aig gach soitheach. Mar eisimpleir, le container timescale bidh e comasach obrachadh timcheall air an aon dòigh ’s a bhios iad ag obair le stòran-dàta. Is e sin, leigidh e leat na gnìomhan a leanas a choileanadh:

  • Log a-steach do shlige Postgres.
  • In-mhalairt agus às-mhalairt chlàran.
  • cruthachadh pg_dump clàran no stòran-dàta.

Inneal tagraidh Express.js, expressjs, faodaidh na comasan a leanas a bhith aca:

  • A 'toirt seachad dàta ùr bho log an t-siostam.
  • Log a-steach don t-slige gus òrdughan sònraichte a chuir an gnìomh.

Eadar-obrachadh le Containers

Aon uair ‘s gu bheil sinn air conaltradh a stèidheachadh eadar soithichean a’ cleachdadh Docker Compose, tha an t-àm ann conaltradh leis na soithichean sin. Taobh a-staigh siostam Docker Compose tha òrdugh docker-compose, roghainn taic -f, a leigeas leat faidhle a ghluasad chun t-siostam docker-compose.yml.

A 'cleachdadh comasan an roghainn seo, faodaidh tu eadar-obrachadh leis an t-siostam a chuingealachadh a-mhàin ris na soithichean sin a tha air an ainmeachadh san fhaidhle docker-compose.yml.

Bheir sinn sùil air cò ris a bhios eadar-obrachadh le soithichean coltach nuair a bhios tu a’ cleachdadh òrdughan docker-compose. Ma smaoinicheas sinn gum feum sinn logadh a-steach don t-slige psql, an uairsin is dòcha gum bi na h-òrdughan co-fhreagarrach a’ coimhead mar seo:

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

An aon àithne nach eil air a chleachdadh airson a chur an gnìomh docker-composeagus docker, is dòcha gum bi e coltach ri seo:

docker exec -it  edp_timescale_1 psql -Upostgres

Thoir an aire gu bheil e an-còmhnaidh nas fheàrr an àithne a chleachdadh ann an leithid de chùisean docker, agus an àithne docker-compose, leis gu bheil seo a’ cur às don fheum air ainmean soithichean a chuimhneachadh.

Chan eil an dà òrdugh gu h-àrd cho duilich. Ach ma chleachd sinn “wrapper” san fhoirm Makefile, a bheireadh eadar-aghaidh dhuinn ann an cruth òrdughan sìmplidh agus a chanadh e fhèin ri òrdughan fada coltach ris, dh’ fhaodadh na h-aon toraidhean a bhith air an coileanadh mar seo:

make db-shell

Tha e gu math follaiseach gu bheil an cleachdadh Makefile ga dhèanamh nas fhasa obrachadh le soithichean!

Eisimpleir obrach

Stèidhichte air an diagram pròiseict gu h-àrd, cruthaichidh sinn am faidhle a leanas 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

Gus rèiteachadh Docker Compose a riaghladh agus eadar-obrachadh leis na soithichean air a bheil e ag innse, cruthaichidh sinn am faidhle a leanas 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

Tha a’ mhòr-chuid de na h-òrdughan a tha air am mìneachadh an seo a’ buntainn ris a h-uile soitheach, ach a’ cleachdadh an roghainn c= a’ leigeil leat farsaingeachd àithne a chuingealachadh gu aon shoitheach.

Às dèidh a ' Makefile deiseil, faodaidh tu a chleachdadh mar seo:

  • make help - a’ cur a-mach liosta de na h-òrdughan uile a tha rim faighinn airson make.

Sgrìobhadh Docker: A’ sìmpleachadh d’ obair le bhith a’ cleachdadh Makefiles
Cuideachadh air òrdughan a tha rim faighinn

  • make build - a 'cruinneachadh ìomhaigh bho Dockerfile. Anns an eisimpleir againn chleachd sinn ìomhaighean gnàthaichte timescale и ping. Ach an dealbh api tha sinn airson a chruinneachadh gu h-ionadail. Is e seo dìreach a thèid a dhèanamh às deidh an òrdugh seo a chuir an gnìomh.

Sgrìobhadh Docker: A’ sìmpleachadh d’ obair le bhith a’ cleachdadh Makefiles
A 'togail soitheach Docker

  • make start - a 'cur air bhog a h-uile soitheach. Gus dìreach aon ghobhar a chuir air bhog, faodaidh tu òrdugh mar make start c=timescale.

Sgrìobhadh Docker: A’ sìmpleachadh d’ obair le bhith a’ cleachdadh Makefiles
A 'ruith an clàr-ama container

Sgrìobhadh Docker: A’ sìmpleachadh d’ obair le bhith a’ cleachdadh Makefiles
A 'ruith soitheach ping

  • make login-timescale - log a-steach gu seisean bash an t-soithich timescale.

Sgrìobhadh Docker: A’ sìmpleachadh d’ obair le bhith a’ cleachdadh Makefiles
A 'ruith bash ann an clàr-ama container

  • make db-shell - slighe a-steach psql ann an soitheach timescale gus ceistean SQL a chuir an gnìomh an aghaidh an stòr-dàta.

Sgrìobhadh Docker: A’ sìmpleachadh d’ obair le bhith a’ cleachdadh Makefiles
A’ ruith psql ann an soitheach clàr-ama

  • make stop - stad air soithichean.

Sgrìobhadh Docker: A’ sìmpleachadh d’ obair le bhith a’ cleachdadh Makefiles
A 'stad container raon-ama

  • make down - stad agus toirt air falbh soithichean. Gus soitheach sònraichte a thoirt air falbh, faodaidh tu an àithne seo a chleachdadh a’ sònrachadh an t-soitheach a tha thu ag iarraidh. Mar eisimpleir - make down c=timescale no make down c=api.

Sgrìobhadh Docker: A’ sìmpleachadh d’ obair le bhith a’ cleachdadh Makefiles
A 'stad agus a' sguabadh às a h-uile soitheach

Builean

Ged a tha Docker Compose a’ toirt dhuinn seata beairteach de dh’ àitheantan airson a bhith a’ riaghladh shoithichean, uaireannan faodaidh na h-òrdughan sin a bhith fada agus duilich an cuimhneachadh.

Dòigh cleachdaidh Makefile chuidich sinn sinn le bhith a’ stèidheachadh eadar-obrachadh luath is furasta le soithichean bho fhaidhle docker-compose.yml. Is e sin, tha sinn a 'bruidhinn mu na leanas:

  • Chan eil an leasaiche ag eadar-obrachadh ach leis na soithichean pròiseict a tha air am mìneachadh ann an docker-compose.yml, chan eil soithichean ruith eile a’ cur bacadh air obair.
  • Ma thèid òrdugh sònraichte a dhìochuimhneachadh, faodaidh tu an àithne a chuir an gnìomh make help agus faigh cuideachadh air òrdughan a tha rim faighinn.
  • Chan fheum thu liostaichean fada de argamaidean a chuimhneachadh gus gnìomhan a dhèanamh leithid faighinn na h-inntrigidhean loga as ùire no logadh a-steach do shiostam. Mar eisimpleir, òrdugh mar docker-compose -f docker-compose.yml exec timescale psql -Upostgres a 'tionndadh make db-shell.
  • faidhl Makefile Faodaidh tu atharrachadh gu sùbailte ris mar a bhios am pròiseact a’ fàs. Mar eisimpleir, tha e furasta àithne a chuir ris gus cùl-taic stòr-dàta a chruthachadh no gnìomh sam bith eile a dhèanamh.
  • Ma chleachdas sgioba mòr de luchd-leasachaidh an aon rud Makefile, bidh seo a’ sgioblachadh co-obrachadh agus a’ lughdachadh mhearachdan.

PS Anns ar margaidh tha dealbh ann Docker, a dh'fhaodar a stàladh ann an aon bhriogadh. Faodaidh tu sgrùdadh a dhèanamh air gnìomhachd soithichean aig VPS. Gheibh a h-uile neach-dèiligidh ùr 3 latha de dheuchainn an-asgaidh.

Luchd leughaidh! Ciamar a nì thu fèin-ghluasad air Docker Compose?

Sgrìobhadh Docker: A’ sìmpleachadh d’ obair le bhith a’ cleachdadh Makefiles

Source: www.habr.com

Cuir beachd ann