हर कुछ वर्षों में, सॉफ्टवेयर विकास उद्योग में एक बदलाव होता है। इन परिघटनाओं में से एक है माइक्रोसिस्टर्स की अवधारणा में बढ़ती रुचि। हालाँकि माइक्रोसिरोइस नवीनतम तकनीक नहीं है, लेकिन हाल ही में इसकी लोकप्रियता का शाब्दिक अर्थ आसमान छू रहा है।इन दिनों बड़ी अखंड सेवाओं को स्वतंत्र स्वायत्त माइक्रोसर्विसेज द्वारा प्रतिस्थापित किया जाता है। एक माइक्रोसर्विस को एक ऐसे अनुप्रयोग के रूप में माना जा सकता है जो एकल और बहुत विशिष्ट उद्देश्य प्रदान करता है। उदाहरण के लिए, यह एक रिलेशनल डीबीएमएस, एक्सप्रेस एप्लिकेशन, सोलर सेवा हो सकती है। आजकल एक नई सॉफ्टवेयर प्रणाली के विकास के बारे में कल्पना करना मुश्किल है, बिना माइक्रोसिस्टर्स के उपयोग के। और यह स्थिति, बदले में, हमें डॉकर प्लेटफार्म पर ले जाती है।
डाक में काम करनेवाला मज़दूर
माइक्रो सर्विस के विकास और परिनियोजन में डॉकर
प्लेटफॉर्म लगभग एक उद्योग मानक बन गया है। परियोजना की वेबसाइट पर, आप यह पता लगा सकते हैं कि डॉकर एकमात्र स्वतंत्र कंटेनरीकरण प्लेटफ़ॉर्म है जो संगठनों को आसानी से किसी भी एप्लिकेशन को बनाने, साथ ही उन्हें वितरित करने और किसी भी वातावरण में चलाने के लिए अनुमति देता है - संकर बादलों से सीमा प्रणालियों तक।डॉकटर रचना
डॉकर कंपोज़
तकनीक को मल्टी-कंटेनर एप्लिकेशन को कॉन्फ़िगर करने के लिए डिज़ाइन किया गया है। एक डॉकर कंपोज परियोजना में कई डॉकटर कंटेनर शामिल हो सकते हैं, जैसा कि इस परियोजना के निर्माता की जरूरत है।डॉकर कंपोज़ के साथ काम करते समय, एक YAML फ़ाइल का उपयोग एप्लिकेशन सेवाओं को कॉन्फ़िगर करने और एक दूसरे के साथ उनकी बातचीत को व्यवस्थित करने के लिए किया जाता है। डॉकर कंपोज़ इस प्रकार डॉकटर मल्टी-कंटेनर अनुप्रयोगों का वर्णन करने और चलाने के लिए एक उपकरण है।मेजबान सिस्टम पर दो कंटेनर चल रहे हैंGNU मेक
एक कार्यक्रम make
अनिवार्य रूप से स्रोत कोड से कार्यक्रमों और पुस्तकालयों की विधानसभा को स्वचालित करने के लिए एक उपकरण है। सामान्य तौर पर, हम कह सकते हैं कि यह make
किसी भी प्रक्रिया पर लागू होता है जिसमें कुछ स्रोत सामग्री को एक निश्चित परिणाम के लिए निश्चित स्रोत सामग्री में परिवर्तित करने के लिए मनमाना आदेशों का निष्पादन शामिल होता है। हमारे मामले में, टीमों docker-compose
को अमूर्त लक्ष्यों ( फोनी लक्ष्य ) में बदल दिया जाएगा ।प्रोग्राम को यह बताने के लिए make
कि हम उससे क्या चाहते हैं, हमें एक फ़ाइल की आवश्यकता है Makefile
।हमारे Makefile
सामान्य आदेश शामिल होंगे docker
औरdocker-compose
यह कई समस्याओं को हल करने के लिए डिज़ाइन किया गया है। अर्थात्, हम कंटेनर को इकट्ठा करने के बारे में बात कर रहे हैं, इसे शुरू करने, रोकने, इसे फिर से शुरू करने, कंटेनर के लिए उपयोगकर्ता के लॉगिन को व्यवस्थित करने, कंटेनर लॉग के साथ काम करने और इसी तरह की अन्य समस्याओं के समाधान के बारे में।डॉकटर कम्पोज़ के लिए विशिष्ट उपयोग
निम्नलिखित घटकों वाले एक नियमित वेब एप्लिकेशन की कल्पना करें:- TimescaleDB डेटाबेस (पोस्टग्रेज)।
- एक्सप्रेस.जेएस आवेदन।
- पिंग (सिर्फ एक कंटेनर जो कुछ खास नहीं करता है)।
इस एप्लिकेशन को 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
- डेटाबेस में SQL क्वेरी को निष्पादित 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 इमेज है , जो एक क्लिक में इंस्टॉल हो जाती है। आप वीपीएस पर कंटेनरों के संचालन की जांच कर सकते हैं । सभी नए ग्राहकों को परीक्षण के लिए 3 दिन मुफ्त दिए जाते हैं।प्रिय पाठकों! आप डोकर कंपोज के साथ कैसे काम करते हैं?