ڊاڪر ڪمپوز: ميڪ فائلز استعمال ڪندي توهان جي ڪم کي آسان ڪرڻ

هر ڪجھ سالن کان، سافٽ ويئر ڊولپمينٽ انڊسٽري هڪ مثالي شفٽ کان گذري ٿو. انهن واقعن مان هڪ کي microservices جي تصور ۾ وڌندڙ دلچسپي طور سڃاتو وڃي ٿو. جيتوڻيڪ مائڪرو سروسز جديد ترين ٽيڪنالاجي نه آهن، صرف تازو ئي ان جي مقبوليت لفظي طور تي آسمان ڏانهن وڌي وئي آهي.

وڏيون monolithic خدمتون هاڻي آزاد، خودمختيار microservices سان تبديل ٿي رهيا آهن. هڪ microservice هڪ ايپليڪيشن جي طور تي سمجهي سگهجي ٿو جيڪا هڪ واحد ۽ تمام خاص مقصد جي خدمت ڪري ٿي. مثال طور، اهو ٿي سگهي ٿو هڪ تعلقي DBMS، هڪ ايڪسپريس ايپليڪيشن، هڪ سولر سروس.

ڊاڪر ڪمپوز: ميڪ فائلز استعمال ڪندي توهان جي ڪم کي آسان ڪرڻ

اهي ڏينهن، مائڪرو سروسز استعمال ڪرڻ کان سواءِ هڪ نئون سافٽ ويئر سسٽم ٺاهڻ جو تصور ڪرڻ مشڪل آهي. ۽ اها صورتحال، موڙ ۾، اسان کي ڊاکر پليٽ فارم ڏانهن وٺي ٿي.

Docker

پليٽ فارم Docker, microservices جي ترقي ۽ تعیناتي ۾, لڳ ڀڳ هڪ صنعت معيار بڻجي چڪو آهي. پروجيڪٽ جي ويب سائيٽ تي توهان ڳولي سگهو ٿا ته Docker واحد آزاد ڪنٽينرائيزيشن پليٽ فارم آهي جيڪو تنظيمن کي اجازت ڏئي ٿو آساني سان ڪنهن به ايپليڪيشن ٺاهي، انهي سان گڏ انهن کي ڪنهن به ماحول ۾ ورهائڻ ۽ هلائڻ جي اجازت ڏئي ٿو - هائبرڊ بادل کان ڪنڊ سسٽم تائين.

Docker Compose

ٽيڪنالاجي Docker Compose گھڻن ڪنٽينر ايپليڪيشنن کي ترتيب ڏيڻ لاء ٺهيل. هڪ ڊاکر ڪمپوز پروجيڪٽ ۾ ڪيترائي ڊاڪر ڪنٽينر شامل ٿي سگهن ٿا جيئن پروجيڪٽ جي خالق جي ضرورت آهي.

جڏهن ڊڪر ڪمپوز سان ڪم ڪري رهيو آهي، هڪ YAML فائل استعمال ڪئي ويندي آهي ايپليڪيشن سروسز کي ترتيب ڏيڻ ۽ انهن جي رابطي کي منظم ڪرڻ لاءِ هڪ ٻئي سان. تنهن ڪري ڊڪر ڪمپوز هڪ اوزار آهي بيان ڪرڻ ۽ هلائڻ لاءِ ملٽي ڪنٽينر ڊڪر ايپليڪيشنون.

ڊاڪر ڪمپوز: ميڪ فائلز استعمال ڪندي توهان جي ڪم کي آسان ڪرڻ
ميزبان سسٽم تي هلندڙ ٻه ڪنٽينر

جي اين يو ٺاهيو

پروگرام make، بنيادي طور تي پروگرامن ۽ لائبريرين جي تعمير کي خودڪار ڪرڻ لاءِ هڪ اوزار آهي سورس ڪوڊ مان. عام طور تي، اسان اهو چئي سگهون ٿا make ڪنهن به عمل تي لاڳو ٿئي ٿو جنهن ۾ ڪجهه ان پٽ مواد کي تبديل ڪرڻ لاءِ صوابديدي حڪمن تي عمل ڪرڻ شامل آهي، ڪجهه مقصد تائين. اسان جي صورت ۾، حڪم docker-compose تجريدي مقصدن ۾ تبديل ٿي ويندي (فون جا مقصد).

پروگرام ٻڌائڻ لاءِ make انهي بابت جيڪو اسان ان مان چاهيون ٿا، اسان کي هڪ فائل جي ضرورت آهي Makefile.

اسان ۾ Makefile باقاعده حڪمن تي مشتمل هوندو docker и docker-compose، جيڪي ڪيترن ئي مسئلن کي حل ڪرڻ لاءِ ٺهيل آهن. يعني، اسان هڪ ڪنٽينر گڏ ڪرڻ بابت ڳالهائي رهيا آهيون، ان کي شروع ڪرڻ بابت، ان کي روڪڻ، ان کي ٻيهر شروع ڪرڻ، صارف جي لاگ ان کي ڪنٽينر کي منظم ڪرڻ بابت، ڪنٽينر لاگ سان ڪم ڪرڻ بابت، ۽ ٻين ساڳئي مسئلن کي حل ڪرڻ بابت.

ڊاکر ڪمپوز لاءِ عام استعمال جا ڪيس

اچو ته تصور ڪريون هڪ باقاعده ويب ايپليڪيشن جنهن ۾ هيٺيان جزا آهن:

  • TimescaleDB ڊيٽابيس (Postgres).
  • Express.js ايپليڪيشن.
  • پنگ (صرف هڪ ڪنٽينر، ڪجهه خاص نٿو ڪري).

هن ايپليڪيشن کي 3 Docker ڪنٽينرز ۽ هڪ فائل جي ضرورت پوندي 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، هي تعاون کي منظم ڪري ٿو ۽ غلطيون گھٽائي ٿو.

پي ايس اسان ۾ بازار اتي هڪ تصوير آهي Dockerجنهن کي هڪ ڪلڪ ۾ انسٽال ڪري سگهجي ٿو. توھان چيڪ ڪري سگھو ٿا ڪنٽينرز جي آپريشن تي VPS. سڀني نون گراهڪن کي 3 ڏينهن جي مفت ٽيسٽ ڏني وئي آهي.

پيارا پڙهندڙن! توهان Docker Compose ڪيئن خودڪار ڪندا آهيو؟

ڊاڪر ڪمپوز: ميڪ فائلز استعمال ڪندي توهان جي ڪم کي آسان ڪرڻ

جو ذريعو: www.habr.com

تبصرو شامل ڪريو