আপনি যদি ডকার নিয়ে কাজ করেন, তাহলে Dockerfile ফাইল লিখতে পারাটা একটি অনিবার্য কাজ আপনার জন্য। এই চিটশীটে Dockerfile এর primary instruction set গুলো সংক্ষেপে তুলে ধরা হলো—বাংলা ভাষায়, যেন সহজে শেখা যায়।
🐳 FROM
Usage:
- FROM {image}
- FROM {image}:{tag}
- FROM {image}@{digest}
Example:
FROM node:18-alpine
🔹 ইমেজ তৈরি করার জন্য কোন বেজ ইমেজ ব্যবহার হবে তা নির্ধারণ করে।
🔹 এটি অবশ্যই প্রথম ইনস্ট্রাকশন হতে হবে (কমেন্ট বাদে)।
🔹 :tag বা @digest নির্দিষ্ট করা যেতে পারে। না দিলে latest ধরা হয়।
👤 MAINTAINER (Deprecated)
Usage: Maintainer {name}
MAINTAINER আপনার নাম <ইমেইল>
🔸 ইমেজের লেখক (Author) হিসেবে তথ্য সংরক্ষণ করে।
❌ এটি পুরানো হয়ে গেছে, এখন LABEL ব্যবহার করা হয়।
⚙️ RUN
Usage: Run {command}, RUN ["executable", "param1", "param2"]
Example:
RUN apt-get update && apt-get install -y curl
🔹 ইমেজ তৈরির সময় কমান্ড রান করে।
🔹 Shell ফর্ম ও Exec ফর্মে ব্যবহার করা যায়।
🧠 CMD: Shell vs Exec
Usage: CMD ["executable", "param1", "param2"] --> exec form
CMD command param1 param2 --> shell form
Example:
CMD ["node", "app.js"]
CMD ["/bin/ping","localhost"]
🔸 কনটেইনার চালুর সময় ডিফল্ট কমান্ড বা আর্গুমেন্ট নির্ধারণ করে।
🔸 শুধুমাত্র একটি CMD কার্যকর হয়।
🏷️ LABEL
LABEL maintainer="আপনার নাম" version="1.0"
🔹 মেটাডাটা যোগ করতে ব্যবহৃত হয়।
🌐 EXPOSE
Usage: Expose {port} [ ...]
Example:
EXPOSE 3000
🔹 কোন পোর্টগুলো অ্যাপ্লিকেশন শুনছে তা জানায়।
🔹 কিন্তু এটি পোর্ট এক্সপোজ করে না, -p দিয়ে করতে হয়।
🌱 ENV
Usage: Env{key} {value}
Env = [=...]
ENV NODE_ENV=production
🔹 এনভায়রনমেন্ট ভ্যারিয়েবল সেট করে।
🔹 পরবর্তীতে ব্যবহারযোগ্য থাকে।
📂 ADD vs COPY
Usage: ADD [ ...]
COPY [...]
Example:
ADD ./source /app
COPY ./source /app
🔹 COPY: সাধারণ কপি করা।
🔹 ADD: কপি ছাড়াও .tar.gz আনজিপ করে বা রিমোট ইউআরএল থেকেও ফাইল নামায়।
📁 VOLUME
Usage: Volume["path", ....]
Volume path [path....]
Example:
VOLUME ["/data"]
🔹 হোস্ট বা অন্য কনটেইনার থেকে ডেটা মাউন্ট করার জন্য নির্দিষ্ট লোকেশন তৈরি করে।
🔹 উদাহরণ: লগ, ডেটাবেস ডেটা সংরক্ষণের জন্য।
📌 WORKDIR
Usage: Workdir {/path/to/workdir}
Example:
WORKDIR /app
🔹 পরবর্তী RUN, CMD, COPY, ADD ইনস্ট্রাকশনগুলো এই ডিরেক্টরিতে চালানো হবে।
🔹 একাধিকবার ব্যবহার করা যায়। আপেক্ষিক পাথও দেওয়া যায়।
🛠️ ARG
ARG NODE_VERSION=18
🔹 বিল্ড টাইম ভ্যারিয়েবল যা --build-arg দিয়ে পাস করা যায়।
🔹 ENV ভ্যারিয়েবল ARG-কে override করে।
🔹 নিরাপত্তার জন্য সিক্রেট তথ্য ARG দিয়ে না দেওয়াই উত্তম।
🔁 ONBUILD
ONBUILD COPY . /app
🔹 ভবিষ্যতে এই ইমেজ অন্য কেউ FROM করলে তখন এই ইনস্ট্রাকশনগুলো চালানো হবে।
🔹 শুধুমাত্র child ইমেজে চলে, grandchild এ না।
🛑 STOPSIGNAL
STOPSIGNAL SIGKILL
🔹 কনটেইনার থামানোর সময় কোন সিগন্যাল পাঠানো হবে তা নির্ধারণ করে (যেমন SIGINT, SIGTERM)।
🏥 HEALTHCHECK
HEALTHCHECK --interval=30s --timeout=10s --retries=3 \
CMD curl -f http://localhost:3000 || exit 1
🔹 কনটেইনার সুস্থ আছে কিনা তা পরীক্ষা করে।
🔹 0 মানে healthy, 1 মানে unhealthy।
🔹 HEALTHCHECK NONE দিয়ে এটি নিষ্ক্রিয় করা যায়।
📘 উপসংহার
এই ছিল Dockerfile এর মৌলিক ইন্সট্রাকশনগুলোর বাংলা সংক্ষিপ্ত বিবরণ।
🔜 পরবর্তী পর্বে:
👉 Dockerfile লেখার সেরা কিছু Best Practices!
👉 কিভাবে ডকার ইমেজ ছোট, দ্রুত এবং নিরাপদ রাখা যায়।
ফলো করুন এবং কমেন্টে জানান, কোন অংশটা আপনার সবচেয়ে দরকারি লেগেছে!
Top comments (0)