ڈوکر کمپوز: میک فائلز کا استعمال کرتے ہوئے اپنے کام کو آسان بنانا

ہر چند سالوں میں، سافٹ ویئر ڈویلپمنٹ کی صنعت ایک مثالی تبدیلی سے گزرتی ہے۔ ان مظاہر میں سے ایک کو مائیکرو سروسز کے تصور میں بڑھتی ہوئی دلچسپی کے طور پر تسلیم کیا جا سکتا ہے۔ اگرچہ مائیکرو سروسز جدید ترین ٹیکنالوجی نہیں ہیں، لیکن حال ہی میں اس کی مقبولیت لفظی طور پر آسمان کو چھو رہی ہے۔

بڑی یک سنگی خدمات کو اب آزاد، خود مختار مائیکرو سروسز سے تبدیل کیا جا رہا ہے۔ مائیکرو سروس کو ایک ایسی ایپلی کیشن کے طور پر سوچا جا سکتا ہے جو ایک واحد اور بہت ہی خاص مقصد کو پورا کرتی ہے۔ مثال کے طور پر، یہ ایک رشتہ دار DBMS، ایک ایکسپریس ایپلی کیشن، ایک سولر سروس ہو سکتی ہے۔

ڈوکر کمپوز: میک فائلز کا استعمال کرتے ہوئے اپنے کام کو آسان بنانا

ان دنوں، مائیکرو سروسز کا استعمال کیے بغیر نیا سافٹ ویئر سسٹم تیار کرنے کا تصور کرنا مشکل ہے۔ اور یہ صورتحال، بدلے میں، ہمیں ڈوکر پلیٹ فارم کی طرف لے جاتی ہے۔

میں Docker

پلیٹ فارم میں Dockerمائیکرو سروسز کی ترقی اور تعیناتی میں، تقریباً ایک صنعت کا معیار بن گیا ہے۔ پروجیکٹ کی ویب سائٹ پر آپ یہ جان سکتے ہیں کہ ڈوکر واحد آزاد کنٹینرائزیشن پلیٹ فارم ہے جو تنظیموں کو آسانی سے کوئی بھی ایپلی کیشن بنانے کے ساتھ ساتھ کسی بھی ماحول میں تقسیم اور چلانے کی اجازت دیتا ہے - ہائبرڈ کلاؤڈز سے لے کر ایج سسٹمز تک۔

Docker Compose

Технология Docker Compose ملٹی کنٹینر ایپلی کیشنز کو ترتیب دینے کے لیے ڈیزائن کیا گیا ہے۔ ڈوکر کمپوز پروجیکٹ میں اتنے ڈوکر کنٹینرز ہوسکتے ہیں جتنے پروجیکٹ کے تخلیق کار کی ضرورت ہے۔

Docker Compose کے ساتھ کام کرتے وقت، YAML فائل کا استعمال ایپلی کیشن سروسز کو ترتیب دینے اور ایک دوسرے کے ساتھ ان کے تعامل کو منظم کرنے کے لیے کیا جاتا ہے۔ ڈوکر کمپوز اس لیے ملٹی کنٹینر ڈوکر ایپلی کیشنز کو بیان کرنے اور چلانے کے لیے ایک ٹول ہے۔

ڈوکر کمپوز: میک فائلز کا استعمال کرتے ہوئے اپنے کام کو آسان بنانا
میزبان سسٹم پر چلنے والے دو کنٹینرز

GNU بنائیں۔

پروگرام make، بنیادی طور پر سورس کوڈ سے پروگراموں اور لائبریریوں کی تعمیر کو خودکار کرنے کا ایک ٹول ہے۔ عام طور پر ہم یہ کہہ سکتے ہیں۔ make کسی بھی عمل پر لاگو ہوتا ہے جس میں کچھ ان پٹ مواد کو کچھ آؤٹ پٹ فارم میں، کسی مقصد میں تبدیل کرنے کے لیے صوابدیدی حکموں پر عمل درآمد شامل ہوتا ہے۔ ہمارے معاملے میں، احکامات docker-compose تجریدی اہداف میں تبدیل ہو جائیں گے (فون کے اہداف).

پروگرام بتانا make اس کے بارے میں کہ ہم اس سے کیا چاہتے ہیں، ہمیں ایک فائل کی ضرورت ہے۔ Makefile.

ہمارے میں Makefile باقاعدہ کمانڈز پر مشتمل ہوگا۔ docker и docker-compose، جو بہت سے مسائل کو حل کرنے کے لیے بنائے گئے ہیں۔ یعنی، ہم کنٹینر کو جمع کرنے، اسے شروع کرنے، اسے روکنے، اسے دوبارہ شروع کرنے، کنٹینر میں صارف کے لاگ ان کو منظم کرنے کے بارے میں، کنٹینر لاگ کے ساتھ کام کرنے کے بارے میں، اور اسی طرح کے دیگر مسائل کو حل کرنے کے بارے میں بات کر رہے ہیں۔

ڈاکر کمپوز کے لیے عام استعمال کے کیسز

آئیے ایک باقاعدہ ویب ایپلیکیشن کا تصور کریں جس میں درج ذیل اجزاء ہوں:

  • ٹائم اسکیل ڈی بی ڈیٹا بیس (پوسٹگریس)۔
  • 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 ڈیٹا بیس کے خلاف ایس کیو ایل کے سوالات کو انجام دینے کے لیے۔

ڈوکر کمپوز: میک فائلز کا استعمال کرتے ہوئے اپنے کام کو آسان بنانا
ٹائم اسکیلڈ بی کنٹینر میں پی ایس کیو ایل چل رہا ہے۔

  • 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 ہمارے میں بازار ایک تصویر ہے میں Docker، جسے ایک کلک میں انسٹال کیا جا سکتا ہے۔ آپ پر کنٹینرز کے آپریشن کو چیک کر سکتے ہیں۔ VPS. تمام نئے کلائنٹس کو 3 دن کی مفت جانچ دی جاتی ہے۔

پیارے قارئین! آپ ڈوکر کمپوز کو خودکار کیسے بناتے ہیں؟

ڈوکر کمپوز: میک فائلز کا استعمال کرتے ہوئے اپنے کام کو آسان بنانا

ماخذ: www.habr.com

نیا تبصرہ شامل کریں