পাঠসূচি
  1. 1Docker কি? কেন শিখবো Docker? – Complete Intro in Bangla
  2. 2Docker File vs Docker Image vs Docker Container
  3. 3Docker ইনস্টলেশন - Docker Desktop on Mac
  4. 4Docker আর্কিটেকচার Explained – Client, Daemon, Images, Containers
  5. 5Hello World & Ubuntu with Docker – প্রথম Docker Container!
  6. 6Dockerfile কীভাবে কাজ করে? – লিখে ফেলি আমাদের প্রথম Dockerfile
  7. 7Docker Volumes Explained – ডেটা কিভাবে সেভ করবেন Container এ
  8. 8Docker Networks Explained – Containers কিভাবে কথা বলে একে অপরের সাথে?Planned
  9. 9Docker Compose শিখুন – Multiple Containers সহজে Run করুনPlanned
  10. 10Docker Hub & Private Registry – Image Upload এবং Pull করার উপায়Planned
  11. 11Environment Variables in Docker – Config Manage করার Best PracticePlanned
  12. 12Docker Logs & Debugging – সমস্যা সমাধান করার সহজ উপায়Planned
  13. 13Dockerfile Best Practices – Lightweight, Efficient Image তৈরি করুনPlanned
  14. 14Python/Node.js App Dockerize করে দেখাই – Step by Step ProjectPlanned
  15. 15React/Next.js Frontend Dockerize করা শিখিPlanned
  16. 16Database Dockerize করা শিখি – MySQL, PostgreSQL Use CasePlanned
  17. 17Docker Compose দিয়ে Full Stack App Deploy করুন – Real ProjectPlanned
  18. 18Docker ও Nginx দিয়ে Production Ready App বানানো শিখিPlanned
  19. 19Docker vs Podman vs VM – কোনটা কবে ব্যবহার করবেন?Planned
  20. 20Intro to Docker Swarm – Multi-host Deployments in BanglaPlanned
  21. 21Docker Security Best Practices – Container নিরাপদ রাখুনPlanned
  22. 22Top 10 Docker Commands প্রতিদিনের কাজে লাগবেPlanned
  23. 23Docker Interview Questions – চাকরির জন্য প্রস্তুতিPlanned

Dockerfile কীভাবে কাজ করে? – লিখে ফেলি আমাদের প্রথম Dockerfile

Docker · পাঠ 6 · বাংলা · ভিডিও বাংলায়

Dockerfile কীভাবে কাজ করে? – লিখে ফেলি আমাদের প্রথম DockerfileWatch on YouTube

ভিডিওটির ভাষা বাংলা।

Contents

Dockerfile হলো একটি টেক্সট ফাইল যেখানে আমরা আমাদের অ্যাপ্লিকেশনের জন্য একটি কাস্টম Docker ইমেজ তৈরি করার জন্য প্রয়োজনীয় সব নির্দেশনা (instructions) লিখে রাখি। Docker এই ফাইলটি পড়ে এবং সেই অনুযায়ী একটি ইমেজ তৈরি করে।

কেন Dockerfile ব্যবহার করবো?

  • Automation: Dockerfile ব্যবহার করে আমরা ইমেজ তৈরির প্রক্রিয়াটি স্বয়ংক্রিয় (automate) করতে পারি।
  • Version Control: Dockerfile-কে আমরা আমাদের সোর্স কোডের সাথে ভার্সন কন্ট্রোল সিস্টেমে (যেমন Git) রাখতে পারি, যার ফলে আমাদের অ্যাপ্লিকেশন এনভায়রনমেন্টের ইতিহাস ট্র্যাক করা সহজ হয়।
  • Portability: Dockerfile আমাদের অ্যাপ্লিকেশনকে যেকোনো পরিবেশে সহজে চালানোর উপযোগী করে তোলে।

বেসিক Dockerfile নির্দেশনা (Instructions)

কিছু সাধারণ নির্দেশনা যা আমরা Dockerfile-এ ব্যবহার করি:

  • FROM: আমাদের নতুন ইমেজটি কোন বেস ইমেজ (base image) থেকে তৈরি হবে তা নির্দিষ্ট করে। যেমন: python:3.9-slim বা ubuntu:latest.
  • WORKDIR: কন্টেইনারের ভিতরে একটি ওয়ার্কিং ডিরেক্টরি সেট করে। এর পরে RUN, CMD, COPY, ADD কমান্ডগুলো এই ডিরেক্টরিতেই এক্সিকিউট হবে।
  • COPY: হোস্ট মেশিন থেকে ফাইল বা ফোল্ডার কন্টেইনারের ফাইল সিস্টেমে কপি করে।
  • RUN: ইমেজ তৈরির সময় কন্টেইনারের ভিতরে কোনো কমান্ড চালানোর জন্য ব্যবহৃত হয়। যেমন: প্যাকেজ ইনস্টল করা (RUN pip install -r requirements.txt)।
  • CMD: কন্টেইনার চালু করার সময় ডিফল্ট কমান্ড নির্দিষ্ট করে। একটি Dockerfile-এ কেবল একটি CMD থাকতে পারে।

সম্পূর্ণ নির্দেশনার তালিকা এবং তাদের ব্যবহার সম্পর্কে জানতে অফিসিয়াল Dockerfile রেফারেন্স দেখুন।

উদাহরণ: একটি Python Flask ওয়েব অ্যাপ্লিকেশনের জন্য Dockerfile

আসুন, আমরা একটি সাধারণ Python Flask ওয়েব অ্যাপ্লিকেশনের জন্য একটি Dockerfile তৈরি করি।

আমাদের প্রজেক্ট স্ট্রাকচার:

.
├── app.py
├── requirements.txt
└── Dockerfile

১. app.py ফাইল তৈরি করুন:

এই ফাইলটিতে আমাদের Flask অ্যাপ্লিকেশনের কোড থাকবে।

from flask import Flask

app = Flask(__name__)

@app.route("/")
def read_root():
    return {"Hello": "Docker"}

২. requirements.txt ফাইল তৈরি করুন:

এই ফাইলে আমাদের অ্যাপ্লিকেশনের জন্য প্রয়োজনীয় পাইথন প্যাকেজগুলোর তালিকা থাকবে।

Flask

৩. Dockerfile তৈরি করুন:

এখন আমরা আমাদের অ্যাপ্লিকেশনের জন্য Dockerfile লিখব।

# 1. Start with a base
# We'll use an official, lightweight Python image
FROM python:3.12.12-slim

# 2. Set the "working directory" inside the container
# This is like an empty folder for our project
WORKDIR /app

# 3. Copy requirements FIRST
# This is a cool trick for faster builds
COPY requirements.txt .

# 4. Install our app's needs (Flask)
RUN pip install -r requirements.txt

# 5. Copy the rest of our app code
COPY . .

# 6. Set an environment variable
# This tells Flask where our app is
ENV FLASK_APP=app.py

# 7. Expose the port
# Our Flask app runs on port 5000 by default
EXPOSE 5000

# 8. The final command to run the app   
# This starts the Flask server
CMD ["flask", "run", "--host=0.0.0.0"]

ইমেজ বিল্ড এবং কন্টেইনার রান

এখন টার্মিনাল খুলে Dockerfile থাকা ডিরেক্টরিতে যান এবং নিচের কমান্ডগুলো চালান:

১. Docker ইমেজ বিল্ড করুন:

docker build -t flask-docker .
  • -t flask-docker: ইমেজটির একটি নাম (flask-docker) এবং ট্যাগ (latest ডিফল্ট) সেট করে।
  • .: বর্তমান ডিরেক্টরিতে থাকা Dockerfile ব্যবহার করতে বলা হচ্ছে।

২. কন্টেইনার রান করুন:

docker run -p 8000:5000 flask-docker
  • -p 8080:5000: হোস্টের 8080 পোর্টকে কন্টেইনারের 5000 পোর্টের সাথে ম্যাপ করে।

এখন আপনার ওয়েব ব্রাউজারে http://localhost:5000 ভিজিট করলে {"Hello": "Docker"} লেখা দেখতে পাবেন।

এভাবেই আমরা Dockerfile ব্যবহার করে সহজেই আমাদের অ্যাপ্লিকেশনকে কন্টেইনারাইজ করতে পারি।

কোনো ভুল পেয়েছেন? LinkedIn-এ জানান।