একটি ওয়েব অ্যাপ্লিকেশন সেট আপ করার জন্য ডকার ব্যবহার করার মধ্যে আপনার অ্যাপ্লিকেশন এবং এর নির্ভরতাগুলিকে কন্টেইনারাইজ করা জড়িত, যা ডেভেলপমেন্ট, টেস্টিং এবং প্রোডাকশন জুড়ে সামঞ্জস্যপূর্ণ পরিবেশ নিশ্চিত করে। এখানে প্রয়োজনীয় উপাদানগুলি কভার করে একটি সাধারণ নির্দেশিকা রয়েছে:
1. ডকার ইনস্টল করুন
প্রথমে, নিশ্চিত করুন যে আপনার সিস্টেমে ডকার ইনস্টল করা আছে। আপনি অফিসিয়াল ডকার ওয়েবসাইট থেকে আপনার অপারেটিং সিস্টেমের জন্য ডকার ডেস্কটপ ডাউনলোড করতে পারেন। লিনাক্সে কমান্ড-লাইন সরঞ্জামগুলির জন্য, আপনার ডিস্ট্রিবিউশনের প্যাকেজ ম্যানেজার ব্যবহার করুন (যেমন, উবুন্টুতে sudo apt install docker.io)।
2. একটি Dockerfile তৈরি করুন
একটি Dockerfile হল একটি টেক্সট ফাইল যাতে ডকারের জন্য একটি ইমেজ তৈরি করার নির্দেশাবলী থাকে। এটি পরিবেশ, নির্ভরতা এবং আপনার অ্যাপ্লিকেশন কীভাবে চালাবেন তা সংজ্ঞায়িত করে।
একটি Node.js অ্যাপ্লিকেশনের জন্য উদাহরণ Dockerfile:
# একটি অফিসিয়াল Node.js রানটাইমকে প্যারেন্ট ইমেজ হিসাবে ব্যবহার করুন
FROM node:18-alpine
# কন্টেইনারের মধ্যে কাজের ডিরেক্টরি সেট করুন
WORKDIR /app
# package.json এবং package-lock.json (বা yarn.lock) কপি করুন
COPY package*.json ./
# অ্যাপ নির্ভরতা ইনস্টল করুন
RUN npm install
# আপনার অ্যাপ্লিকেশনের বাকি কোড কপি করুন
COPY . .
# আপনার অ্যাপ্লিকেশন যে পোর্টে শোনে তা এক্সপোজ করুন
EXPOSE 3000
# আপনার অ্যাপ চালানোর জন্য কমান্ডটি সংজ্ঞায়িত করুন
CMD [ "npm", "start" ]
সাধারণ Dockerfile নির্দেশাবলীর ব্যাখ্যা:
* FROM <image>: যে বেস ইমেজটির উপর ভিত্তি করে তৈরি করা হবে তা নির্দিষ্ট করে।
* WORKDIR /app: কন্টেইনারের মধ্যে বর্তমান কাজের ডিরেক্টরি সেট করে।
* COPY <src> <dest>: আপনার হোস্ট মেশিন থেকে কন্টেইনারে ফাইল এবং ডিরেক্টরি কপি করে।
* RUN <command>: ইমেজ বিল্ড প্রক্রিয়ার সময় কমান্ডগুলি কার্যকর করে (যেমন, নির্ভরতা ইনস্টল করা)।
* EXPOSE <port>: ডকারকে জানায় যে কন্টেইনারটি রানটাইমে এই পোর্টে শোনে।
* CMD ["executable", "param1", "param2"]: কন্টেইনার শুরু হওয়ার সময় চালানোর জন্য ডিফল্ট কমান্ড নির্দিষ্ট করে।
3. আপনার ডকার ইমেজ তৈরি করুন
আপনার টার্মিনালে আপনার প্রকল্পের রুট ডিরেক্টরিতে (যেখানে আপনার Dockerfile আছে) নেভিগেট করুন এবং বিল্ড কমান্ডটি চালান:
docker build -t your-app-name .
docker build: ডকার ইমেজ তৈরি করার কমান্ড।-t your-app-name: ইমেজটিকে একটি নাম দিয়ে ট্যাগ করে (যেমন,my-nodejs-app)।.: বিল্ড কনটেক্সট নির্দিষ্ট করে (বর্তমান ডিরেক্টরি), ডকারকেDockerfileএবং অ্যাপ্লিকেশন ফাইলগুলি কোথায় খুঁজে পাবে তা জানায়।
4. আপনার ডকার কন্টেইনার চালান
ইমেজ তৈরি হয়ে গেলে, আপনি এটি থেকে একটি কন্টেইনার তৈরি এবং চালাতে পারেন।
docker run -p 80:3000 your-app-name
docker run: কন্টেইনার শুরু করার কমান্ড।-p 80:3000: কন্টেইনারের ভিতরের পোর্ট3000(যেটি আপনার অ্যাপ শোনে) আপনার হোস্ট মেশিনের পোর্ট80এ ম্যাপ করে। এটি আপনাকেhttp://localhostএর মাধ্যমে আপনার অ্যাপ অ্যাক্সেস করতে দেয়।your-app-name: আপনি যে ডকার ইমেজটি চালাতে চান তার নাম।
আপনার ওয়েব অ্যাপ্লিকেশনটি এখন একটি ডকার কন্টেইনারের মধ্যে চলবে, যা আপনার ব্রাউজারের মাধ্যমে অ্যাক্সেসযোগ্য হবে।
5. মাল্টি-সার্ভিস অ্যাপ্লিকেশনের জন্য ডকার কম্পোজ ব্যবহার করা
একাধিক পরিষেবা জড়িত অ্যাপ্লিকেশনগুলির জন্য (যেমন, একটি ওয়েব অ্যাপ এবং একটি ডেটাবেস), ডকার কম্পোজ অমূল্য। এটি সমস্ত পরিষেবা সংজ্ঞায়িত এবং পরিচালনা করার জন্য একটি docker-compose.yml ফাইল ব্যবহার করে।
PostgreSQL ডেটাবেসের সাথে সংযুক্ত একটি Node.js অ্যাপের জন্য উদাহরণ docker-compose.yml:
version: '3.8' # Compose ফাইল ফরম্যাটের সংস্করণ নির্দিষ্ট করে
services:
web:
build: . # বর্তমান ডিরেক্টরির Dockerfile থেকে ইমেজ তৈরি করুন
ports:
- "3000:3000"
volumes:
- .:/app # লাইভ আপডেটের জন্য স্থানীয় কোড মাউন্ট করুন (ডেভেলপমেন্ট)
environment:
DATABASE_URL: postgresql://user:password@db:5432/mydatabase
depends_on:
- db # নিশ্চিত করুন যে ডেটাবেস ওয়েব পরিষেবার আগে শুরু হয়
networks:
- app-network
db:
image: postgres:14-alpine # একটি প্রি-বিল্ট PostgreSQL ইমেজ ব্যবহার করুন
environment:
POSTGRES_DB: mydatabase
POSTGRES_USER: user
POSTGRES_PASSWORD: password
volumes:
- db_data:/var/lib/postgresql/data # ডেটাবেস ডেটা স্থায়ী করুন
networks:
- app-network
volumes:
db_data: # নামযুক্ত ভলিউম সংজ্ঞায়িত করুন
networks:
app-network: # একটি কাস্টম নেটওয়ার্ক সংজ্ঞায়িত করুন
ডকার কম্পোজ ব্যবহার করতে, আপনার প্রকল্পের রুটে docker-compose.yml ফাইলটি রাখুন এবং চালান:
docker compose up -d --build
docker compose up: ইমেজ তৈরি করে (যদি--buildব্যবহৃত হয়) এবং পরিষেবাগুলি চালু করে।-d: কন্টেইনারগুলিকে ডিটাচড মোডে (ব্যাকগ্রাউন্ডে) চালায়।
কন্টেইনার, নেটওয়ার্ক এবং ভলিউমগুলি বন্ধ এবং সরাতে:
docker compose down
এই সেটআপটি আপনার ওয়েব অ্যাপ্লিকেশনের জন্য একটি পুনরাবৃত্তিযোগ্য এবং বিচ্ছিন্ন পরিবেশ সরবরাহ করে, যা ডেভেলপমেন্ট এবং ডিপ্লয়মেন্টকে অনেক সহজ করে তোলে।