د ډاکر کمپوز: د میک فایلونو په کارولو سره ستاسو کار ساده کول

هر څو کاله، د سافټویر پراختیا صنعت د تمثیل بدلون څخه تیریږي. د دې پدیدې څخه یوه د مایکرو خدماتو په مفهوم کې د مخ پر ودې علاقې په توګه پیژندل کیدی شي. که څه هم مایکرو خدمتونه نوې ټیکنالوژي نه ده، یوازې په دې وروستیو کې یې شهرت په لفظي توګه آسمان ته رسیدلی.

لوی واحد خدمتونه اوس د خپلواکو، خپلواکو کوچنیو خدماتو لخوا ځای په ځای شوي. د مایکرو سرویس د یو غوښتنلیک په توګه فکر کیدی شي چې یو واحد او خورا ځانګړي هدف ته خدمت کوي. د مثال په توګه، دا کیدای شي یو اړونده DBMS، د ایکسپریس غوښتنلیک، د سولر خدمت وي.

د ډاکر کمپوز: د میک فایلونو په کارولو سره ستاسو کار ساده کول

پدې ورځو کې ، د مایکرو خدماتو کارولو پرته د نوي سافټویر سیسټم رامینځته کولو تصور کول ګران دي. او دا وضعیت ، په بدل کې ، موږ د ډاکر پلیټ فارم ته رسوي.

ډاکر

فورمې ډاکرد مایکرو خدماتو په پراختیا او پلي کولو کې ، نږدې د صنعت معیار ګرځیدلی. د پروژې ویب پا onه کې تاسو موندلی شئ چې ډاکر یوازینی خپلواک کانټینر کولو پلیټ فارم دی چې سازمانونو ته اجازه ورکوي په اسانۍ سره کوم غوښتنلیک رامینځته کړي ، په بیله بیا یې په هر چاپیریال کې توزیع او چلوي - له هایبرډ بادل څخه تر څنډې سیسټمونو پورې.

ډاکر جوړ کړئ

ټیکنالوژي ډاکر جوړ کړئ د څو کانټینر غوښتنلیکونو تنظیم کولو لپاره ډیزاین شوی. د ډاکر کمپوز پروژه کولی شي د پروژې جوړونکي اړتیاو سره سم ډیری ډاکر کانټینرونه ولري.

کله چې د ډاکر کمپوز سره کار کول ، د YAML فایل د غوښتنلیک خدماتو تنظیم کولو او د یو بل سره د دوی تعامل تنظیم کولو لپاره کارول کیږي. د ډاکر کمپوز له همدې امله د ملټي کانټینر ډاکر غوښتنلیکونو تشریح او چلولو لپاره وسیله ده.

د ډاکر کمپوز: د میک فایلونو په کارولو سره ستاسو کار ساده کول
دوه کانټینرونه په کوربه سیسټم کې روان دي

GNU جوړ کړئ

پروګرام make، په اصل کې د سرچینې کوډ څخه د برنامو او کتابتونونو جوړولو اتومات کولو وسیله ده. په عموم کې، موږ کولی شو ووایو make په هر هغه پروسې باندې تطبیق کیږي چې د خپل سري حکمونو اجرا کول پکې شامل وي ترڅو ځینې داخلي توکي په ځینې محصول فارم کې بدل کړي، ځینې هدف ته. زموږ په قضیه کې، امرونه docker-compose په خلاصو اهدافو به بدل شي (د تلیفون هدفونه).

پروګرام ته ووایه make د هغه څه په اړه چې موږ ترې غواړو، موږ یو فایل ته اړتیا لرو Makefile.

زموږ کې Makefile منظم حکمونه به ولري docker и docker-compose، کوم چې د ډیری ستونزو حل کولو لپاره ډیزاین شوي. د مثال په توګه ، موږ د کانټینر راټولولو په اړه خبرې کوو ، د پیل کولو په اړه یې ، د دې ودرولو ، بیا پیل کولو په اړه ، کانټینر ته د کارونکي ننوتل تنظیم کولو په اړه ، د کانټینر لاګونو سره کار کولو په اړه ، او د ورته نورو ستونزو حل کولو په اړه.

د ډاکر کمپوز لپاره د کارولو عادي قضیې

راځئ چې یو منظم ویب غوښتنلیک تصور کړو چې لاندې برخې لري:

  • د TimescaleDB ډیټابیس (Postgres).
  • د Express.js غوښتنلیک.
  • پینګ (یوازې یو کانټینر، کوم ځانګړی نه کوي).

دا غوښتنلیک به د 3 ډاکر کانټینرونو او فایل ته اړتیا ولري docker-compose، کوم چې د دې کانټینرونو اداره کولو لارښوونې لري. هر کانټینر به مختلف ټچ پوائنټونه ولري. د مثال په توګه، د کانتینر سره timescale دا به ممکن وي چې نږدې ورته کار وکړي لکه څنګه چې دوی د ډیټابیسونو سره کار کوي. د مثال په توګه، دا تاسو ته اجازه درکوي چې لاندې کړنې ترسره کړئ:

  • د پوسټګریس شیل ته ننوتل.
  • د میزونو واردول او صادرول.
  • جوړول pg_dump میزونه او ډیټابیسونه.

Express.js غوښتنلیک کانټینر، expressjsکیدای شي لاندې وړتیاوې ولري:

  • د سیسټم لاګ څخه تازه معلومات چمتو کول.
  • د ځانګړو حکمونو د اجرا کولو لپاره شیل ته ننوتل.

د کانټینرونو سره تعامل

یوځل چې موږ د ډاکر کمپوز په کارولو سره د کانټینرونو ترمینځ ارتباط تنظیم کړو ، نو دا وخت دی چې د دې کانټینرونو سره اړیکه ونیسو. د ډاکر کمپوز سیسټم کې یو کمانډ شتون لري docker-composeد ملاتړ اختیار -f، کوم چې تاسو ته اجازه درکوي سیسټم ته فایل انتقال کړئ docker-compose.yml.

د دې اختیار د وړتیاوو په کارولو سره، تاسو کولی شئ د سیسټم سره تعامل یوازې هغه کانتینرونو ته محدود کړئ چې په فایل کې ذکر شوي docker-compose.yml.

راځئ چې وګورو چې د کانټینرونو سره تعامل څه ډول ښکاري کله چې د کمانډونو په کارولو سره docker-compose. که موږ تصور وکړو چې موږ باید شیل ته ننوځئ psql، بیا ورته حکمونه ممکن داسې ښکاري:

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

هماغه حکم چې د اجرا کولو لپاره نه کارول کیږي docker-composeاو docker، کیدای شي داسې ښکاري:

docker exec -it  edp_timescale_1 psql -Upostgres

مهرباني وکړئ په یاد ولرئ چې په داسې قضیو کې دا تل غوره ده چې کمانډ وکاروئ docker، او ټیم docker-compose، ځکه چې دا د کانټینر نومونو یادولو اړتیا له مینځه وړي.

پورته دواړه حکمونه دومره ستونزمن ندي. مګر که موږ په فورمه کې "ریپر" وکاروو Makefile، کوم چې به موږ ته د ساده کمانډونو په بڼه یو انٹرفیس راکړي او پخپله به ورته اوږد کمانډونه ووایی ، بیا ورته پایلې په لاندې ډول ترلاسه کیدی شي:

make db-shell

دا خورا روښانه ده چې کارول Makefile د کانټینرونو سره کار کول خورا اسانه کوي!

د کار مثال

د پورتنۍ پروژې ډیاګرام پراساس ، موږ به لاندې فایل جوړ کړو 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

د ډاکر کمپوز ترتیب تنظیم کولو لپاره او د کانټینرونو سره تعامل چې دا یې تشریح کوي، موږ به لاندې فایل جوړ کړو 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

دلته تشریح شوي ډیری حکمونه په ټولو کانټینرونو کې پلي کیږي، مګر د اختیار په کارولو سره c= تاسو ته اجازه درکوي د کمانډ ساحه یو کانټینر ته محدود کړئ.

وروسته Makefile چمتو دی، تاسو کولی شئ دا په لاندې ډول وکاروئ:

  • make help - د ټولو موجودو امرونو لیست صادرول make.

د ډاکر کمپوز: د میک فایلونو په کارولو سره ستاسو کار ساده کول
په شته کمانډونو کې مرسته وکړئ

  • make build - د انځور راټولول Dockerfile. زموږ په مثال کې موږ موجوده انځورونه کارولي timescale и ping. مګر انځور api موږ غواړو په محلي توګه راټول کړو. دا هغه څه دي چې د دې قوماندې له اجرا کولو وروسته به ترسره شي.

د ډاکر کمپوز: د میک فایلونو په کارولو سره ستاسو کار ساده کول
د ډاکر کانټینر جوړول

  • make start - د ټولو کانټینرونو پیل کول. یوازې یو کانټینر لانچ کولو لپاره ، تاسو کولی شئ یو کمانډ وکاروئ لکه make start c=timescale.

د ډاکر کمپوز: د میک فایلونو په کارولو سره ستاسو کار ساده کول
د مهال ویش کانټینر چلول

د ډاکر کمپوز: د میک فایلونو په کارولو سره ستاسو کار ساده کول
د پینګ کانټینر چلول

  • make login-timescale - د کانټینر بش سیشن ته ننوتل timescale.

د ډاکر کمپوز: د میک فایلونو په کارولو سره ستاسو کار ساده کول
د وخت په اندازه کانټینر کې باش چلول

  • make db-shell - ته ننوتل psql په یوه کانتینر کې timescale د ډیټابیس په وړاندې د SQL پوښتنو اجرا کولو لپاره.

د ډاکر کمپوز: د میک فایلونو په کارولو سره ستاسو کار ساده کول
د psql چلول په یو وخت اندازه شوي کانټینر کې

  • make stop - د کانتینرونو ودرول.

د ډاکر کمپوز: د میک فایلونو په کارولو سره ستاسو کار ساده کول
د مهال ویش کانټینر ودرول

  • make down - د کانتینرونو ودرول او لرې کول. د یو ځانګړي کانټینر لرې کولو لپاره ، تاسو کولی شئ دا کمانډ وکاروئ چې غوښتل شوي کانټینر مشخص کړي. د مثال په ډول - make down c=timescale او یا make down c=api.

د ډاکر کمپوز: د میک فایلونو په کارولو سره ستاسو کار ساده کول
د ټولو کانتینرونو ودرول او حذف کول

پایلې

که څه هم ډاکر کمپوز موږ ته د کانټینرونو اداره کولو لپاره د کمانډونو بډایه سیټ راکوي ، ځینې وختونه دا قوماندې اوږد او په یاد ساتل ستونزمن کیدی شي.

د کارولو طریقه Makefile موږ سره د فایل څخه کانټینرونو سره ګړندي او اسانه تعامل کې مرسته وکړه docker-compose.yml. د مثال په توګه، موږ د لاندې په اړه خبرې کوو:

  • پراختیا کونکی یوازې د پروژې کانټینرونو سره اړیکه لري چې په کې تشریح شوي docker-compose.ymlد نورو چلولو کانتینرونو لخوا په کار کې مداخله نه کیږي.
  • په هغه صورت کې چې یو ټاکلی کمانډ هیر شوی وي، تاسو کولی شئ کمانډ اجرا کړئ make help او په شته کمانډونو کې مرسته ترلاسه کړئ.
  • تاسو اړتیا نلرئ د عملونو ترسره کولو لپاره د دلیلونو اوږد لیستونه په یاد ولرئ لکه د وروستي لاګ ننوتل یا سیسټم ته ننوتل. د مثال په توګه، یو کمانډ لکه docker-compose -f docker-compose.yml exec timescale psql -Upostgres ننوتل make db-shell.
  • د دوتنې Makefile تاسو کولی شئ په نرمۍ سره د دې سره تطابق وکړئ لکه څنګه چې پروژه وده کوي. د مثال په توګه، د ډیټابیس بیک اپ جوړولو یا کوم بل عمل ترسره کولو لپاره د کمانډ اضافه کول اسانه دي.
  • که د پراختیا کونکو لوی ټیم ورته کاروي Makefile، دا همکاري منظموي او غلطۍ کموي.

PS زموږ کې بازار یو انځور دی ډاکر، کوم چې په یو کلیک کې نصب کیدی شي. تاسو کولی شئ د کانټینرونو عملیات وګورئ VPS. ټولو نویو پیرودونکو ته د 3 ورځو ازموینه وړیا ورکول کیږي.

ګرانو لوستونکو! تاسو د ډاکر کمپوز څنګه اتومات کوئ؟

د ډاکر کمپوز: د میک فایلونو په کارولو سره ستاسو کار ساده کول

سرچینه: www.habr.com

Add a comment