Tech TutorBangla Web Documentation
Portfolio
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Docker Documentation25টি অধ্যায়
প্রযুক্তি নির্বাচন
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Introduction
  • Containerization
  • Architecture
  • Installation
  • Images
  • Containers
  • Dockerfile
  • Volumes
  • Networks
  • Docker Compose
  • Environment Variables
  • Node.js + Docker
  • Next.js + Docker
  • Express.js + Docker
  • NestJS + Docker
  • Databases + Docker
  • Development Workflow
  • Production
  • Multi-stage Builds
  • Security
  • Optimization
  • CI/CD
  • Deployment
  • Real-world Project
  • Interview Questions
  1. Docs
  2. Docker
  3. Dockerfile — প্রতিটি Instruction
DockerIntermediate

Dockerfile — প্রতিটি Instruction

FROM, RUN, COPY, WORKDIR, ENV, EXPOSE, CMD, ENTRYPOINT — Dockerfile লেখা ও build — বাংলায়।

13টি অংশবাংলা ভাষায়

Dockerfile হলো একটি plain text file যাতে image কীভাবে গড়তে হবে তার ধাপ-ধাপে নির্দেশনা থাকে। প্রতিটি লাইন একটি instruction — প্রতিটি instruction একটি layer।

সবচেয়ে গুরুত্বপূর্ণ instructions

Instructionকাজ
FROMbase image বাছাই (প্রথম লাইন হতে হয়)
WORKDIRworking directory নির্ধারণ
COPYhost থেকে image-এ file কভার
RUNbuild-এর সময় কমান্ড চালায় (যেমন install)
ENVenvironment variable সেট
EXPOSEকোন port container-এর ব্যবহার হবে (documentation)
CMDcontainer run-এর default command
ENTRYPOINTfixed command — যেটি override হয় না
USERকোন user-এ process চালবে

প্রথম Dockerfile

Dockerfiledockerfile
dockerfile
# ১. base image
FROM node:20-alpine

# ২. app-এর directory
WORKDIR /app

# ৩. dependencies আগে কপি (cache-কেন্দ্রিক)
COPY package*.json ./
RUN npm install

# ৪. বাকি কোড
COPY . .

# ৫. port জানিয়ে দেওয়া
EXPOSE 3000

# ৬. default কমান্ড
CMD ["npm", "start"]

CMD vs ENTRYPOINT

CMD container run-এর default কমান্ড — docker run image <arg> লিখলে প্রতিস্থাপন হয়। ENTRYPOINT হলো fixed কমান্ড — run-এর সময় override হয় না (override করতে --entrypoint flag লাগে)। একসাথে ব্যবহার করলে ENTRYPOINT + CMD-এর args-এ পরিণত হয়।

ENTRYPOINT + CMD combodockerfile
dockerfile
# docker run myapp --port 4000
# → 실제: node app.js --port 4000
ENTRYPOINT ["node", "app.js"]
CMD ["--port", "3000"]

docker build

Image buildbash
bash
docker build -t my-app:1.0 .
# -t → tag/নাম,   . → build context (current folder)

# build log-এ প্রতিটি লাইন হয় layer তৈরি করছে
docker image ls | grep my-app

সাধারণ ভুল

  • .dockerignore না লাগানো — node_modules/Docker-dir image-এ কপি হয়
  • সম্পূর্ণ কোড আগে কপি করে তারপর install — চাইলে পুরো cache ভেঙে যায়
  • CMD npm start (shell form) — সিগন্যাল হ্যান্ডলিং-compatible নয়, ["npm","start"] (exec form) ভালো
  • root user-এ সব চালানো — production-এ নিরাপদ নয়
Exec form আসল best practice

CMD ["node", "app.js"] — এতে SIGTERM/SIGINT সঠিকভাবে process-এ পৌঁছায়, graceful shutdown হয়। শেল ফর্ম npm start-এ সেই signal main process-এ নাও পৌঁছাতে পারে।

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
আগেরDocker ContainersপরেরVolumes ও Data Persistence
এই পেজে
Tech Tutor

বাংলায় ওয়েব ডেভেলপমেন্ট ডকুমেন্টেশন শিখুন — ধাপে ধাপে।

Homeসব ডকুমেন্টেশনQuick Startআমার নোটস

© 2026 Tech Tutor. বাংলায় শিখুন, বাংলায় গড়ুন।

mdanamolhasan1998@gmail.com