Cyfansoddi Docker: Symleiddio Eich Gwaith Gan Ddefnyddio Ffeiliau Gwneud

Bob ychydig flynyddoedd, mae'r diwydiant datblygu meddalwedd yn mynd trwy newid paradeim. Gellir cydnabod un o'r ffenomenau hyn fel y diddordeb cynyddol yn y cysyniad o ficrowasanaethau. Er nad microwasanaethau yw'r dechnoleg ddiweddaraf, dim ond yn ddiweddar y mae ei boblogrwydd wedi cynyddu'n aruthrol.

Mae gwasanaethau mawr monolithig bellach yn cael eu disodli gan ficrowasanaethau annibynnol, ymreolaethol. Gellir meddwl am ficrowasanaeth fel cymhwysiad sy'n ateb pwrpas unigol a phenodol iawn. Er enghraifft, gallai fod yn DBMS perthynol, yn gais Express, yn wasanaeth Solr.

Cyfansoddi Docker: Symleiddio Eich Gwaith Gan Ddefnyddio Ffeiliau Gwneud

Y dyddiau hyn, mae'n anodd dychmygu datblygu system feddalwedd newydd heb ddefnyddio microwasanaethau. Ac mae'r sefyllfa hon, yn ei dro, yn ein harwain at lwyfan y Docker.

Docker

Llwyfan Docker, wrth ddatblygu a defnyddio microservices, wedi dod yn safon diwydiant bron. Ar wefan y prosiect gallwch ddarganfod mai Docker yw'r unig lwyfan cynhwysyddio annibynnol sy'n caniatáu i sefydliadau greu unrhyw gais yn ddiymdrech, yn ogystal â'u dosbarthu a'u rhedeg mewn unrhyw amgylchedd - o gymylau hybrid i systemau ymyl.

Cyfansoddwr Dociwr

Технология Cyfansoddwr Dociwr wedi'i gynllunio ar gyfer ffurfweddu cymwysiadau aml-gynhwysydd. Gall prosiect Docker Compose gynnwys cymaint o gynwysyddion Docker ag sydd eu hangen ar grëwr y prosiect.

Wrth weithio gyda Docker Compose, defnyddir ffeil YAML i ffurfweddu gwasanaethau cymhwysiad a threfnu eu rhyngweithio â'i gilydd. Felly mae Docker Compose yn offeryn ar gyfer disgrifio a rhedeg cymwysiadau Docker aml-gynhwysydd.

Cyfansoddi Docker: Symleiddio Eich Gwaith Gan Ddefnyddio Ffeiliau Gwneud
Dau gynhwysydd yn rhedeg ar system gwesteiwr

GNU Gwneud

Rhaglen make, yn ei hanfod yn offeryn ar gyfer awtomeiddio adeiladu rhaglenni a llyfrgelloedd o god ffynhonnell. Yn gyffredinol, gallwn ddweud hynny make yn berthnasol i unrhyw broses sy'n cynnwys gweithredu gorchmynion mympwyol i drawsnewid rhai deunyddiau mewnbwn i ffurf allbwn, i ryw nod. Yn ein hachos ni, y gorchmynion docker-compose yn cael ei drawsnewid yn nodau haniaethol (Targedau ffôn).

I ddweud wrth y rhaglen make am yr hyn yr ydym ei eisiau ganddo, mae angen ffeil Makefile.

Yn ein Makefile bydd yn cynnwys gorchmynion rheolaidd docker и docker-compose, sydd wedi'u cynllunio i ddatrys llawer o broblemau. Sef, yr ydym yn sôn am gydosod cynhwysydd, am ei gychwyn, ei atal, ei ailgychwyn, am drefnu mewngofnodi defnyddiwr i'r cynhwysydd, am weithio gyda logiau cynhwysydd, ac am ddatrys problemau tebyg eraill.

Achosion Defnydd Nodweddiadol ar gyfer Cyfansoddi Docwyr

Gadewch i ni ddychmygu cymhwysiad gwe rheolaidd sydd â'r cydrannau canlynol:

  • Cronfa ddata AmserlenDB (Postgres).
  • Cais Express.js.
  • Nid yw ping (dim ond cynhwysydd, yn gwneud unrhyw beth arbennig).

Bydd angen 3 cynhwysydd Docker a ffeil ar y cais hwn docker-compose, sy'n cynnwys cyfarwyddiadau ar gyfer rheoli'r cynwysyddion hyn. Bydd gan bob cynhwysydd wahanol bwyntiau cyffwrdd. Er enghraifft, gyda chynhwysydd timescale bydd modd gweithio tua'r un ffordd ag y maent yn gweithio gyda chronfeydd data. Sef, mae'n caniatáu ichi gyflawni'r gweithredoedd canlynol:

  • Mewngofnodi i gragen Postgres.
  • Mewnforio ac allforio tablau.
  • creu pg_dump tablau neu gronfeydd data.

Cynhwysydd cais Express.js, expressjs, gall fod â'r galluoedd canlynol:

  • Darparu data ffres o log y system.
  • Mewngofnodwch i'r gragen i weithredu rhai gorchmynion.

Rhyngweithio â Chynhwyswyr

Unwaith y byddwn wedi sefydlu cyfathrebu rhwng cynwysyddion gan ddefnyddio Docker Compose, mae'n bryd cyfathrebu â'r cynwysyddion hynny. O fewn y system Docker Compose mae gorchymyn docker-compose, opsiwn ategol -f, sy'n eich galluogi i drosglwyddo ffeil i'r system docker-compose.yml.

Gan ddefnyddio galluoedd yr opsiwn hwn, gallwch gyfyngu rhyngweithio â'r system yn unig i'r cynwysyddion hynny a grybwyllir yn y ffeil docker-compose.yml.

Gadewch i ni edrych ar sut olwg sydd ar ryngweithio â chynwysyddion wrth ddefnyddio gorchmynion docker-compose. Os dychmygwn fod angen i ni fewngofnodi i'r gragen psql, yna efallai y bydd y gorchmynion cyfatebol yn edrych fel hyn:

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

Yr un gorchymyn na ddefnyddir i weithredu docker-composeAc docker, efallai y bydd yn edrych fel hyn:

docker exec -it  edp_timescale_1 psql -Upostgres

Sylwch, mewn achosion o'r fath, mae bob amser yn well defnyddio'r gorchymyn docker, a'r gorchymyn docker-compose, gan fod hyn yn dileu'r angen i gofio enwau cynwysyddion.

Nid yw'r ddau orchymyn uchod mor anodd â hynny. Ond pe baem yn defnyddio “lapiwr” yn y ffurf Makefile, a fyddai'n rhoi rhyngwyneb i ni ar ffurf gorchmynion syml ac a fyddai ei hun yn galw gorchmynion hir tebyg, yna gellid cyflawni'r un canlyniadau fel hyn:

make db-shell

Mae'n eithaf amlwg bod y defnydd Makefile yn gwneud gweithio gyda chynwysyddion yn llawer haws!

Enghraifft weithredol

Yn seiliedig ar y diagram prosiect uchod, byddwn yn creu'r ffeil ganlynol 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

Er mwyn rheoli cyfluniad Docker Compose a rhyngweithio â'r cynwysyddion y mae'n eu disgrifio, byddwn yn creu'r ffeil ganlynol 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

Mae'r rhan fwyaf o'r gorchmynion a ddisgrifir yma yn berthnasol i bob cynhwysydd, ond gan ddefnyddio'r opsiwn c= yn eich galluogi i gyfyngu cwmpas gorchymyn i un cynhwysydd.

Ar ôl Makefile yn barod, gallwch ei ddefnyddio fel hyn:

  • make help — cyhoeddi rhestr o'r holl orchmynion sydd ar gael ar eu cyfer make.

Cyfansoddi Docker: Symleiddio Eich Gwaith Gan Ddefnyddio Ffeiliau Gwneud
Help gyda'r gorchmynion sydd ar gael

  • make build - cydosod delwedd o Dockerfile. Yn ein hesiampl fe wnaethom ddefnyddio delweddau sy'n bodoli eisoes timescale и ping. Ond y ddelwedd api rydym am gasglu'n lleol. Dyma'n union beth fydd yn cael ei wneud ar ôl gweithredu'r gorchymyn hwn.

Cyfansoddi Docker: Symleiddio Eich Gwaith Gan Ddefnyddio Ffeiliau Gwneud
Adeiladu cynhwysydd Docker

  • make start — lansio pob cynhwysydd. I lansio un cynhwysydd yn unig, gallwch ddefnyddio gorchymyn fel make start c=timescale.

Cyfansoddi Docker: Symleiddio Eich Gwaith Gan Ddefnyddio Ffeiliau Gwneud
Rhedeg y cynhwysydd amserlen

Cyfansoddi Docker: Symleiddio Eich Gwaith Gan Ddefnyddio Ffeiliau Gwneud
Rhedeg cynhwysydd ping

  • make login-timescale — mewngofnodi i sesiwn bash y cynhwysydd timescale.

Cyfansoddi Docker: Symleiddio Eich Gwaith Gan Ddefnyddio Ffeiliau Gwneud
Rhedeg bash mewn cynhwysydd amserlen

  • make db-shell - mynediad i psql mewn cynhwysydd timescale i weithredu ymholiadau SQL yn erbyn y gronfa ddata.

Cyfansoddi Docker: Symleiddio Eich Gwaith Gan Ddefnyddio Ffeiliau Gwneud
Rhedeg psql mewn cynhwysydd timetimedb

  • make stop — cynwysyddion stopio.

Cyfansoddi Docker: Symleiddio Eich Gwaith Gan Ddefnyddio Ffeiliau Gwneud
Stopio cynhwysydd amserlen

  • make down — stopio a thynnu cynwysyddion. I gael gwared ar gynhwysydd penodol, gallwch ddefnyddio'r gorchymyn hwn yn nodi'r cynhwysydd a ddymunir. Er enghraifft - make down c=timescale neu make down c=api.

Cyfansoddi Docker: Symleiddio Eich Gwaith Gan Ddefnyddio Ffeiliau Gwneud
Stopio a dileu pob cynhwysydd

Canlyniadau

Er bod Docker Compose yn rhoi set gyfoethog o orchmynion i ni ar gyfer rheoli cynwysyddion, weithiau gall y gorchmynion hyn ddod yn hir ac yn anodd eu cofio.

Dull o ddefnyddio Makefile ein helpu i sefydlu rhyngweithio cyflym a hawdd gyda chynwysyddion o ffeil docker-compose.yml. Sef, rydym yn sôn am y canlynol:

  • Mae'r datblygwr yn rhyngweithio â'r cynwysyddion prosiect a ddisgrifir yn unig docker-compose.yml, nid yw cynwysyddion rhedeg eraill yn ymyrryd â gwaith.
  • Os bydd gorchymyn penodol yn cael ei anghofio, gallwch chi weithredu'r gorchymyn make help a chael cymorth ar y gorchmynion sydd ar gael.
  • Nid oes rhaid i chi gofio rhestrau hir o ddadleuon i gyflawni gweithredoedd megis cael y cofnodion log diweddaraf neu fewngofnodi i system. Er enghraifft, gorchymyn fel docker-compose -f docker-compose.yml exec timescale psql -Upostgres yn troi i mewn i make db-shell.
  • file Makefile Gallwch addasu'n hyblyg iddo wrth i'r prosiect dyfu. Er enghraifft, mae'n hawdd ychwanegu gorchymyn i greu copi wrth gefn o gronfa ddata neu gyflawni unrhyw gamau eraill.
  • Os bydd tîm mawr o ddatblygwyr yn defnyddio'r un peth Makefile, mae hyn yn symleiddio cydweithio ac yn lleihau gwallau.

PS Yn ein marchnadle mae delw Docker, sy'n cael ei osod mewn un clic. Gallwch wirio bod y cynwysyddion yn gweithio ymlaen Datganiad Personol Dioddefwr. Rhoddir 3 diwrnod o brofi am ddim i bob cwsmer newydd.

Annwyl ddarllenwyr! Sut ydych chi'n awtomeiddio Docker Compose?

Cyfansoddi Docker: Symleiddio Eich Gwaith Gan Ddefnyddio Ffeiliau Gwneud

Ffynhonnell: hab.com

Ychwanegu sylw