Skip to content

CI/CD with Docker (ডকার সিআই/সিডি ইনটিগ্রেশন)

আধুনিক সফটওয়্যার ডেভেলপমেন্টে CI/CD (Continuous Integration & Continuous Deployment) অত্যন্ত গুরুত্বপূর্ণ। ডকার এই প্রসেসটিকে অনেক সহজ এবং নির্ভরযোগ্য করে তোলে কারণ এটি 'Write Once, Run Anywhere' নীতি মেনে চলে।

১. CI/CD-তে ডকারের ভূমিকা

সিআই/সিডি পাইপলাইনে ডকার ব্যবহারের প্রধান সুবিধা হলো Consistency। আপনার লোকাল মেশিনে যে এনভায়রনমেন্টে কোড রান করছে, ঠিক একই এনভায়রনমেন্ট পাইপলাইনে এবং প্রোডাকশন সার্ভারেও ব্যবহার করা যায়।


২. জনপ্রিয় টুলস এবং ডকার ইনটিগ্রেশন

GitHub Actions (গিটহাব অ্যাকশনস)

গিটহাব অ্যাকশনসে ডকার ব্যবহার করা সবচেয়ে সহজ। আপনি সরাসরি ডকার ফাইল বিল্ড এবং পুশ করতে পারেন।

yaml
# .github/workflows/docker-ci.yml
steps:
  - name: Build and Push Docker Image
    uses: docker/build-push-action@v2
    with:
      push: true
      tags: user/myapp:latest

GitLab CI (গিটল্যাব সিআই)

GitLab-এ ডকার ব্যবহার করার জন্য Docker-in-Docker (dind) টেকনোলজি ব্যবহার করা হয়।

yaml
image: docker:20.10.16
services:
  - docker:dind

build:
  script:
    - docker build -t my-app .
    - docker push my-app

Jenkins (জেনকিন্স)

Jenkins-এ ডকার প্লাগইন ব্যবহার করে পাইপলাইনের ভেতরেই কন্টেইনার তৈরি করা যায়।


৩. পাইপলাইনে ইমেজ স্ক্যানিং (Image Scanning)

নিরাপত্তা নিশ্চিত করতে কোড পুশ করার পর ইমেজটি স্ক্যান করা উচিত। Trivy বা Snyk এর মতো টুল পাইপলাইনের ভেতরেই ভালনারেবিলিটি চেক করতে পারে।

bash
# পাইপলাইনের ভেতরে স্ক্যান করা
trivy image my-app:latest

৪. মাল্টি-স্টেজ ডিপ্লয়মেন্ট (Multi-stage Deployments)

পাইপলাইনে আমরা সাধারণত কয়েক ধরণের এনভায়রনমেন্ট রাখি:

  • Dev: কোড পুশ হওয়ার পর অটোমেটিক বিল্ড এবং টেস্ট।
  • Staging: প্রোডাকশনের মতো এনভায়রনমেন্টে মেলা দেখা।
  • Production: শুধুমাত্র ম্যানুয়াল অ্যাপ্রুভালের পর ডকার সোয়ার্ম বা কুবারনেটিসে ডিপ্লয়।

৫. রেজিস্ট্রি ইনটিগ্রেশন (Registry Integration)

পাইপলাইনের শেষে ইমেজটি একটি সেন্ট্রাল রেজিস্ট্রিতে (যেমন: Docker Hub, AWS ECR, বা Harbor) পুশ করতে হয়। এর ফলে প্রোডাকশন সার্ভার ঐ ইমেজটিকে পুল (Pull) করে রান করতে পারে।

৬. বেস্ট প্র্যাকটিস

  • Use Specific Tags: পাইপলাইনে কখনো শুধুমাত্র :latest ব্যবহার করবেন না। গিট কমিট আইডি (Commit SHA) ট্যাগ হিসেবে ব্যবহার করুন।
  • Cache Builds: ইনক্রিমেন্টাল বিল্ড স্পিড বাড়ানোর জন্য ডকার লেয়ার ক্যাশ ব্যবহার করুন।
  • Keep Images Lean: শুধুমাত্র প্রোডাকশন রেডি ইমেজ পাইপলাইন থেকে তৈরি করুন।

Released under the MIT License.