Skip to content

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 ./ টেকনিকটি লেয়ার ক্যাশিং এর জন্য খুবই গুরুত্বপূর্ণ।

Released under the MIT License.