আপনাকে ডোনার-ক্লাইজের সাথে আপনাকে এক টন কমান্ড লিখতে রাখতে ডকার-কমপোজ উপস্থিত রয়েছে।
ডকার-কমপোজ একইসাথে একাধিক পাত্রে স্টার্টআপ করা সহজ করে তোলে এবং এটিকে স্বয়ংক্রিয়ভাবে কিছু ফর্ম নেটওয়ার্কিংয়ের সাথে সংযুক্ত করে।
ডকার-রচনাটির উদ্দেশ্য হ'ল ডকার ক্লাই হিসাবে কাজ করা কিন্তু একাধিক কমান্ড আরও দ্রুত জারি করা।
ডকার-রচনাটির ব্যবহার করতে, আপনি আগে যে docker-compose.ymlফাইলটি চালাচ্ছিলেন সেগুলিকে একটি ফাইলের মধ্যে এনকোড করা দরকার ।
আপনি কেবল তাদের ইয়ামল ফাইলে কপি করতে যাচ্ছেন না, একটি বিশেষ বাক্য গঠন রয়েছে।
একবার তৈরি হয়ে গেলে, আপনাকে এটিকে ডকার-রচনা ক্লাইলে খাওয়াতে হবে এবং ফাইলটি বিশ্লেষণ করতে এবং এটি নির্দিষ্ট করা সঠিক কনফিগারেশন সহ সমস্ত বিভিন্ন ধারক তৈরি করা আমাদের ক্লাইকের হাতে থাকবে।
সুতরাং আপনার পৃথক পাত্রে থাকবে, উদাহরণস্বরূপ বলতে দিন, একটি হ'ল redis-serverদ্বিতীয়টি হ'ল node-appএবং আপনি এটি চান Dockerfileআপনার বর্তমান ডিরেক্টরিতে এটি ব্যবহার করে তৈরি করা ।
অতিরিক্তভাবে, সেই ধারকটি তৈরি করার পরে আপনি এর ভিতরে চলমান সমস্ত কিছু অ্যাক্সেস করার জন্য ধারক থেকে স্থানীয় মেশিনে কিছু বন্দর ম্যাপ করবেন।
সুতরাং আপনার docker-compose.ymlফাইলের জন্য আপনি প্রথম লাইনের মতো শুরু করতে চান:
version: '3'
এটি ডকারকে আপনার যে সংস্করণটি docker-composeব্যবহার করতে চান তা বলে । এর পরে আপনাকে যুক্ত করতে হবে:
version: '3'
services:
redis-server:
image: 'redis'
node-app:
build: .
ইন্ডেন্টেশনটি লক্ষ্য করুন, খুব গুরুত্বপূর্ণ। এছাড়াও, একটি পরিষেবাদির জন্য লক্ষ্য করুন আমি একটি চিত্র দখল করছি, তবে অন্য একটি পরিষেবার জন্য আমি docker-composeদ্বিতীয় ধারকটির জন্য ব্যবহার করা হবে এমন চিত্রটি তৈরি করতে বর্তমান ডিরেক্টরিটির ভিতরে দেখতে বলছি ।
তারপরে আপনি এই ধারকটিতে যে সমস্ত পৃথক পোর্ট খুলতে চান তা নির্দিষ্ট করতে চান।
version: '3'
services:
redis-server:
image: 'redis'
node-app:
build: .
ports:
-
দয়া করে ড্যাশটি লক্ষ্য করুন, একটি ইয়ামল ফাইলের একটি ড্যাশ হ'ল আমরা কীভাবে অ্যারে নির্দিষ্ট করি। এই উদাহরণে আমি 8081আমার লোকাল মেশিনে 8081কনটেইনারটিতে ম্যাপিং করছি :
version: '3'
services:
redis-server:
image: 'redis'
node-app:
build: .
ports:
- "8081:8081"
সুতরাং প্রথম বন্দরটি হ'ল আপনার স্থানীয় মেশিন, এবং অন্যটি ধারকটির বন্দর, আপনি এইরকম বিভ্রান্তি এড়াতে উভয়ের মধ্যে পার্থক্য করতে পারেন:
version: '3'
services:
redis-server:
image: 'redis'
node-app:
build: .
ports:
- "4001:8081"
আপনার docker-compose.ymlফাইলটি এটির মতো বিকাশ করার ফলে এটি মূলত একই নেটওয়ার্কে এই ধারকগুলি তৈরি করবে এবং তারা যেভাবে খুশি সেভাবে একে অপরের সাথে যোগাযোগের জন্য অবাধ অ্যাক্সেস পাবে এবং তারা যতটা চান তথ্য বিনিময় করবে।
যখন দুটি পাত্রে ব্যবহার করে তৈরি করা হয় তখন docker-composeআমাদের কোনও বন্দর ঘোষণার প্রয়োজন হয় না।
এখন আমার উদাহরণে, নোডেজ অ্যাপে আমাদের এমন কিছু কোড কনফিগারেশন করা দরকার যা দেখতে এরকম কিছু দেখাচ্ছে:
const express = require('express');
const redis = require('redis');
const app = express();
const client = redis.createClient({
host: 'redis-server'
});
আমি আপনাকে এই বিষয়ে সচেতন করতে উপরের এই উদাহরণটি ব্যবহার করি যে এর বাইরেও আপনাকে কিছু নির্দিষ্ট কনফিগারেশন করতে হবে docker-compose.yml যে আপনার প্রকল্পের জন্য সুনির্দিষ্ট ফাইলটি ।
এখন, আপনি যদি কোনও নোডেজ অ্যাপ্লিকেশনটির সাথে নিজেকে কাজ করে দেখেন এবং পুনরায় দেখা যায় তবে আপনি নিশ্চিত করতে চান যে আপনি ডিফল্ট বন্দর নোডেজের ব্যবহার সম্পর্কে অবগত আছেন তাই আমি এটি যুক্ত করব:
const express = require('express');
const redis = require('redis');
const app = express();
const client = redis.createClient({
host: 'redis-server',
port: 6379
});
সুতরাং ডকার দেখতে যাচ্ছেন যে নোড অ্যাপটি সন্ধান করছে redis-serverএবং এই চলমান ধারকটিতে সেই সংযোগটি পুনর্নির্দেশ করবে।
পুরো সময়, Dockerfileএকমাত্র এটি থাকে:
FROM node:alpine
WORKDIR '/app'
COPY /package.json ./
RUN npm install
COPY . .
CMD ["npm", "start"]
সুতরাং, docker run myimageফাইলের অভ্যন্তরে সমস্ত পাত্রে বা পরিষেবাদিগুলির পরিবর্তে চালানোর জন্য docker-compose upআপনাকে দৌড়াতে হবে, এবং আপনাকে কোনও চিত্র নির্দিষ্ট করতে হবে না কারণ ডকার বর্তমানের ডিরেক্টরিতে কাজ করবে এবং এটির জন্য অনুসন্ধান করবেdocker-compose.yml সেখানে ভিতরে ফাইল।
আগে docker-compose.yml, আমরা দুটি পৃথক কমান্ড সাথে মোকাবিলা করতে হয়েছে docker build .এবং docker run myimageকিন্তু এ docker-composeবিশ্বের আপনি আপনার ইমেজ আপনি লিখতে পুনর্নির্মাণের করতে চান তাহলে docker-compose up --build। এটি ডকারকে আবার ধারকগুলি আবার শুরু করতে বলে কিন্তু সর্বশেষ পরিবর্তনগুলি পেতে এটি পুনর্নির্মাণ করতে বলে।
সুতরাং docker-composeএকাধিক পাত্রে কাজ করা সহজ করে তোলে। পরের বার আপনার পটভূমিতে এই পাত্রে এই গোষ্ঠীটি শুরু করতে হবে docker-compose up -dএবং আপনি যেগুলি করতে পারেন তা বন্ধ করতে হবে docker-compose down।