Real-World Project: Node.js App with Docker
এই প্রজেক্টে আমরা একটি সিম্পল Node.js (Express) অ্যাপ্লিকেশন তৈরি করব এবং সেটিকে ডকার কন্টেইনারে রান করব। এটি ব্যাকএন্ড ডেভেলপারদের জন্য একটি আদর্শ প্রজেক্ট।
প্রজেক্টের লক্ষ্য
- একটি সিম্পল Express.js সার্ভার তৈরি করা।
package.jsonকনফিগার করা।- প্রোডাকশন-গ্রেড
Dockerfileলেখা। .dockerignoreব্যবহার করেnode_modulesবাদ দেওয়া।- কন্টেইনার বিল্ড এবং টেস্ট করা।
১. প্রজেক্ট সেটআপ
প্রথমে একটি ফোল্ডার তৈরি করুন এবং সেখানে npm init দিয়ে প্রজেক্ট শুরু করুন:
bash
mkdir node-docker-app
cd node-docker-app
npm init -y
npm install express২. অ্যাপ্লিকেশন কোড
server.js নামে একটি ফাইল তৈরি করুন:
javascript
const express = require("express");
const app = express();
const PORT = 3000;
app.get("/", (req, res) => {
res.json({ message: "Hello from Dockerized Node.js App! 🚀" });
});
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});package.json ফাইলে start স্ক্রিপ্ট আপডেট করুন:
json
"scripts": {
"start": "node server.js"
}৩. Dockerfile তৈরি করা
আমরা node:alpine ইমেজ ব্যবহার করব কারণ এটি সাইজে ছোট এবং সুরক্ষিত।
dockerfile
# ১. বেস ইমেজ
FROM node:18-alpine
# ২. ওয়ার্কিং ডিরেক্টরি সেট করা
WORKDIR /app
# ৩. ডিপেন্ডেন্সি কপি এবং ইনস্টল করা
# প্রথমে package.json কপি করছি যাতে ক্যাশিং সুবিধা পাওয়া যায়
COPY package*.json ./
RUN npm install
# ৪. বাকি সোর্স কোড কপি করা
COPY . .
# ৫. পোর্ট এক্সপোজ এবং কমান্ড
EXPOSE 3000
CMD ["npm", "start"]৪. .dockerignore ফাইল
node_modules ফোল্ডার এবং লগ ফাইল ইমেজে কপি না করার জন্য .dockerignore ফাইল তৈরি করুন:
text
node_modules
npm-debug.log
Dockerfile
.dockerignore৫. বিল্ড এবং রান
ইমেজ বিল্ড করা
bash
docker build -t my-node-app .কন্টেইনার রান করা
bash
docker run -d -p 3000:3000 --name node-server my-node-app৬. টেস্ট করা
আপনার ব্রাউজার বা Postman এ গিয়ে হিট করুন: http://localhost:3000
আউটপুট:
json
{
"message": "Hello from Dockerized Node.js App! 🚀"
}৭. ক্লিনআপ
bash
docker stop node-server
docker rm node-serverসারাংশ
এই প্রজেক্টে আমরা শিখলাম কীভাবে একটি ডাইনামিক অ্যাপ্লিকেশন (Node.js) কন্টেইনারাইজ করতে হয়। বিশেষ করে COPY package*.json ./ টেকনিকটি লেয়ার ক্যাশিং এর জন্য খুবই গুরুত্বপূর্ণ।