تابستون تو راهه. قبل از تغییر قیمت‌ها یادگیری رو شروع کن ...
۰ ثانیه
۰ دقیقه
۰ ساعت
۰ دیدگاه نظر محمدرسول اصغری
داکر کامپوز چیست؟ (راهنمای جامع docker compose و پروژه‌های کاربردی)
داکر کامپوز چیست؟ (راهنمای جامع docker compose و پروژه‌های کاربردی)

گاهی اوقات حین توسعه برنامه‌ها، با چالش‌های غیرمنتظره‌ای روبرو می‌شیم. همه ما این لحظات رو تجربه کردیم؛مثلا وقتی که داشتیم پروژه‌هامون رو روی سرورهای مختلف اجرا می‌کردیم، هزار تا مشکل عجیب و غریب به وجود می‌اومد. از ناسازگاری کتابخونه‌ها گرفته تا مشکلات پیکربندی. انگار که هر پروژه یه بمب ساعتی بود که هر لحظه ممکن بود بترکه.

خب، اینجا بود که داکر اومد و همه چی رو تغییر داد. داکر اومد تا همه چیز رو داخل یه کانتینر کوچولو ببنده و به ما بگه: "نگران نباش، من همه چی روحل می‌کنم!" اما اینجا هنوز داستان ما تموم نشده. چون وقتی تعداد کانتینرها زیاد شد، مدیریت کردنشون هم به همون نسبت سخت شد. اینجاست که داکر کامپوز وارد صحنه میشه و بازم زندگی ما رو نجات میده.

تصور کن اگه داکر و داکر کامپوز نبودن، الان داشتیم چیکار می‌کردیم؟ باید برای هر پروژه کلی سرور می‌خریدیم، کلی زمان می‌ذاشتیم تا هر کتابخونه و سرویس رو به درستی پیکربندی کنیم، و از همه بدتر، هر بار که یه کوچولو تغییر تو پروژه‌هامون می‌دادیم، باید همه چیز رو از اول تنظیم می‌کردیم. دنیا بدون داکر و داکر کامپوز شبیه یه کابوس بی‌پایانه که توش هر روز باید با مشکلات و خرابی‌ها دست و پنجه نرم کنی.

تاریخچه داکر و داکر کامپوز

داکر برای اولین بار در سال ۲۰۱۳ توسط شرکت دات‌کلاد (DotCloud) معرفی شد. هدف اصلی داکر این بود که به توسعه‌دهندگان این امکان رو بده که برنامه‌هاشون رو در محیط‌های ایزوله‌شده و قابل حمل اجرا کنند. اینجوری هر پروژه توی یه کانتینر قرار می‌گرفت و دیگه نیازی به نگرانی درباره ناسازگاری‌های محیطی نبود.

داکر کامپوز هم در سال ۲۰۱۴ معرفی شد تا مدیریت این کانتینرها رو آسون‌تر کنه. با داکر کامپوز، شما می‌تونید چندین کانتینر رو با هم تعریف و اجرا کنید. این یعنی یه سرویس می‌تونه از چندین کانتینر تشکیل بشه که هر کدوم یه بخش از سرویس رو اجرا می‌کنن. با استفاده از فایل‌های YAML، می‌تونید تنظیمات و پیکربندی‌های پیچیده رو به سادگی مدیریت کنید.

تا اینجا متوجه شدی که داکر کامپوز چطور زندگی ما توسعه دهنده‌ها رو راحت کرده😉. اما هنوز چیزهای بیشتری وجود داره که باید بدونی. مثلا چطوری می‌تونی از داکر کامپوز برای پروژه‌های خودت استفاده کنی؟ یا چه تنظیماتی می‌تونه کارتو بهتر کنه؟ بیا ادامه بدیم و همه اینا رو با هم کشف کنیم.

شروع کار با داکر کامپوز

برای شروع کار با داکر کامپوز، اول باید داکر و داکر کامپوز رو روی سیستم خودتون نصب کنید. نصب داکر کامپوز خیلی سادست. اول از همه باید مطمئن بشید که داکر روی سیستم شما نصب شده. بعدش می‌تونید با استفاده از دستورات زیر داکر کامپوز رو نصب کنید:

# دانلود آخرین نسخه داکر کامپوز
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# تنظیم مجوز اجرا
sudo chmod +x /usr/local/bin/docker-compose
# تست نصب
docker-compose --version

حالا که داکر کامپوز نصب شد، می‌تونیم شروع کنیم به استفاده از اون. فرض کنید یه پروژه ساده داریم که شامل یه وب سرور و یه دیتابیس هست. بیاید ببینیم چطور می‌تونیم این پروژه رو با داکر کامپوز مدیریت کنیم.

تعریف پروژه با داکر کامپوز

برای شروع، یه فایل جدید به نام docker-compose.yml توی ریشه پروژه‌تون بسازید و محتویات زیر رو داخلش قرار بدید:

version: '3'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
  db:
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: example

تو این فایل، دو سرویس تعریف کردیم: یکی برای وب سرور (nginx) و یکی برای دیتابیس (mysql). حالا با استفاده از دستور زیر می‌تونیم این سرویس‌ها رو اجرا کنیم:

docker-compose up

همین! حالا داکر کامپوز همه سرویس‌ها رو براتون اجرا می‌کنه و می‌تونید به راحتی به وب سرور و دیتابیس‌تون دسترسی داشته باشید.

شبکه‌ها و ولوم‌ها

یکی از امکانات جالب داکر کامپوز، تعریف شبکه‌ها و ولوم‌هاست. با استفاده از شبکه‌ها می‌تونید سرویس‌های مختلف رو به هم متصل کنید و با استفاده از ولوم‌ها می‌تونید داده‌های دائمی رو ذخیره کنید. بیاید یه مثال بزنیم:

version: '3'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    networks:
      - frontend
  db:
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: example
    volumes:
      - db-data:/var/lib/mysql
    networks:
      - backend
networks:
  frontend:
  backend:
volumes:
  db-data:

اینجا دو شبکه تعریف کردیم: frontend و backend. سرویس وب رو به شبکه frontend و سرویس دیتابیس رو به شبکه backend متصل کردیم. همچنین، یه ولوم به نام db-data تعریف کردیم که برای ذخیره داده‌های دیتابیس استفاده می‌شه.

همچنین شما میتوانید اطلاعاتی مثل رمز دیتابیس و... رو از فایل env. به شکل زیر بخونید:

# فایل .env
MYSQL_ROOT_PASSWORD=example

و در فایل docker-compose.yml:

version: '3'
services:
  db:
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}

تا اینجا فهمیدی که چطور می‌تونی داکر کامپوز رو برای پروژه‌های ساده و پیچیده‌تر استفاده کنی. اما هنوز کلی چیزای جذاب دیگه مونده که باید یاد بگیری. مثلا چطور می‌تونی پروژه‌هات رو مقیاس‌پذیر کنی؟😍 یا چه ابزارهایی می‌تونن کمکت کنن تا داکر کامپوز رو بهتر مدیریت کنی؟

مقیاس‌پذیری با داکر کامپوز

مقیاس‌پذیری یعنی اینکه بتونی پروژه‌هات رو به راحتی گسترش بدی و با افزایش تعداد کاربران یا سرویس‌ها، بدون مشکل کار کنه. با داکر کامپوز می‌تونی تعداد کانتینرهای یه سرویس رو افزایش بدی و اونا رو روی چندین سرور به صورت همزمان اجرا کنی. اینجوری وقتی تعداد کاربران زیاد میشه، سرویس‌هات می‌تونن بدون افت کیفیت به همون خوبی کار کنن. بیا با هم ببینیم چطور می‌تونیم با استفاده از داکر کامپوز و ابزارهایی مثل داکر سوارم و کوبرنیتس، مقیاس‌پذیری رو به پروژه‌هامون اضافه کنیم.

استفاده از داکر سوارم

داکر سوارم یکی از ابزارهای قدرتمند داکره که برای مقیاس‌پذیری و مدیریت کانتینرها در یک کلاستر استفاده می‌شه. با استفاده از داکر سوارم، شما می‌تونید چندین کانتینر رو روی چندین سرور به صورت توزیع‌شده اجرا کنید. برای استفاده از داکر سوارم با داکر کامپوز، می‌تونید فایل docker-compose.yml رو به صورت زیر تنظیم کنید:

version: '3'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    deploy:
      replicas: 3
  db:
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: example
    deploy:
      replicas: 2

اینجا از بخش deploy استفاده کردیم تا تعداد تکرارهای هر سرویس رو مشخص کنیم. به عنوان مثال، وب سرور رو با ۳ تکرار و دیتابیس رو با ۲ تکرار اجرا می‌کنیم.

استفاده از Kubernetes

کوبرنیتس یکی دیگه از ابزارهای قدرتمند برای مدیریت کانتینرهاست. شما می‌تونید با استفاده از این ابزار، کانتینرها رو در یک کلاستر بزرگ مدیریت کنید. برای استفاده از آن، می‌تونید فایل‌های YAML مشابه داکر کامپوز رو ایجاد کنید، اما باید کمی تنظیمات متفاوت باشه.

ابزارهای جانبی برای مدیریت داکر کامپوز

داکر کامپوز به تنهایی فوق‌العاده‌ست، اما وقتی با ابزارهای جانبی ترکیب بشه، تازه می‌فهمی که چقدر می‌تونه قدرتمندتر بشه. تو این بخش با هم ابزارهای کمکی و جانبی که می‌تونن مدیریت داکر کامپوز رو راحت‌تر و بهتر کنن، بررسی می‌کنیم. آماده‌ای؟ بیا شروع کنیم!

Portainer

Portainer یه ابزار مدیریتی با رابط کاربری گرافیکی برای داکره که به شما این امکان رو می‌ده تا کانتینرها، ایمیج‌ها و شبکه‌های داکر رو به راحتی مدیریت کنید. با استفاده از Portainer، می‌تونید همه چیز رو از طریق یه داشبورد ساده و زیبا کنترل کنید.

Rancher

Rancher یکی دیگه از ابزارهای مدیریتیه که به شما کمک می‌کنه تا کلاسترهای داکر و کوبرنیتس رو مدیریت کنید. Rancher امکانات پیشرفته‌ای برای مدیریت، نظارت و مقیاس‌پذیری کلاسترها داره و می‌تونه کارتون رو خیلی راحت‌تر کنه.

رفع مشکلات و خطاهای رایج

اینجا می‌خوایم ببینیم چطور می‌تونیم مشکلات و خطاهای رایجی که ممکنه در کار با داکر کامپوز باهاشون برخورد کنیم رو شناسایی و حل کنیم. پس نگران نباش، برای هر مشکلی یه راه‌حل داریم.

مشکل ناسازگاری ورژن‌ها

یکی از مشکلات رایج در داکر کامپوز، ناسازگاری ورژن‌هاست. مثلا ممکنه یه سرویس نیاز به ورژن خاصی از یه کتابخونه داشته باشه که با ورژن‌های دیگه ناسازگار باشه. برای حل این مشکل، باید همیشه ورژن دقیق هر سرویس رو مشخص کنید:

services:
  web:
    image: nginx:1.19.0
  db:
    image: mysql:5.7

مشکل پورت‌های در حال استفاده

اگه سرویس‌های مختلف از پورت‌های مشابهی استفاده کنند، ممکنه با خطای پورت‌های در حال استفاده مواجه بشید. برای حل این مشکل، می‌تونید پورت‌های متفاوتی رو برای هر سرویس تعریف کنید:

services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
  db:
    image: mysql:latest
    ports:
      - "3307:3306"

مشکل کمبود منابع

اگه سیستم شما منابع کافی برای اجرای همه کانتینرها نداره، ممکنه با مشکل کمبود منابع مواجه بشید. برای حل این مشکل، می‌تونید منابع هر سرویس رو محدود کنید:

services:
  web:
    image: nginx:latest
    deploy:
      resources:
        limits:
          cpus: "0.5"
          memory: "512M"

نمونه پروژه‌های پرکاربرد با داکر کامپوز

حالا که با مفاهیم اولیه داکر کامپوز آشنا شدی، بیایید بریم سراغ چند نمونه کد و مثال‌های واقعی. اینجا می‌خوایم ببینیم چطور می‌تونیم از داکر کامپوز تو پروژه‌هامون استفاده کنیم. آماده‌ای؟

پروژه وب ساده با Nginx و Redis

version: '3'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    depends_on:
      - redis
  redis:
    image: redis:latest

پروژه وردپرس با MySQL

version: '3'
services:
  wordpress:
    image: wordpress:latest
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb
    depends_on:
      - db
  db:
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: examplepass
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: examplepass
    volumes:
      - db-data:/var/lib/mysql
volumes:
  db-data:

پروژه Node.js با MongoDB

version: '3'
services:
  node:
    image: node:latest
    ports:
      - "3000:3000"
    volumes:
      - .:/app
    working_dir: /app
    command: "npm start"
    depends_on:
      - mongo
  mongo:
    image: mongo:latest
    volumes:
      - mongo-data:/data/db
volumes:
  mongo-data:

با این نمونه کدها، می‌تونی به راحتی پروژه‌های خودت رو با داکر کامپوز به راحتی راه‌اندازی کنی و لذت استفاده ازشون رو ببری😊.

مزایا و معایب داکر کامپوز

هر تکنولوژی خوبی‌ها و بدی‌های خودش رو داره. تو این بخش می‌خوایم با هم نگاهی بندازیم به مزایا و معایب داکر کامپوز تا ببینیم چطور می‌تونه به ما کمک کنه و چه چالش‌هایی ممکنه داشته باشه. با دونستن این‌ها، بهتر می‌تونیم تصمیم بگیریم که چطور از داکر کامپوز استفاده کنیم.

مزایا

  • سادگی در مدیریت: داکر کامپوز به شما این امکان رو می‌ده که سرویس‌های مختلف رو به راحتی مدیریت کنید.
  • قابلیت حمل بالا: کانتینرها به راحتی قابل حمل هستن و می‌تونید اون‌ها رو روی هر سیستمی اجرا کنید.
  • مقیاس‌پذیری: با داکر کامپوز و ابزارهایی مثل داکر سوارم و کوبرنیتس، می‌تونید پروژه‌های خودتون رو به راحتی مقیاس‌پذیر کنید.

معایب

  • منحنی یادگیری: برای کار با داکر کامپوز نیاز به یادگیری مفاهیم جدید دارید که ممکنه کمی زمان‌بر باشه.
  • مصرف منابع: اجرای چندین کانتینر ممکنه منابع سیستم شما رو به شدت مصرف کنه، به خصوص اگه منابع محدودی داشته باشید.
  • مشکلات ناسازگاری: بعضی اوقات ممکنه با مشکلات ناسازگاری بین ورژن‌های مختلف سرویس‌ها مواجه بشید که نیاز به مدیریت دقیق‌تر داره.

سوالات متداول

۱. داکر کامپوز چیه و چه کاربردی داره؟

داکر کامپوز ابزاری برای تعریف و مدیریت چندین کانتینر داکره. با استفاده از فایل‌های YAML، می‌تونید سرویس‌های مختلف رو تعریف کنید و همه اون‌ها رو با یک دستور اجرا کنید.

۲. چطور می‌تونم داکر کامپوز رو نصب کنم؟

برای نصب داکر کامپوز، ابتدا باید داکر رو نصب کنید. سپس می‌تونید با استفاده از دستورات زیر داکر کامپوز رو نصب کنید:

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version

۳. فایل docker-compose.yml چیه؟

فایل docker-compose.yml فایلیه که توش تنظیمات و پیکربندی سرویس‌های مختلف رو به صورت YAML تعریف می‌کنید. این فایل به داکر کامپوز می‌گه که چه سرویس‌هایی باید اجرا بشن و چطور با هم ارتباط برقرار کنن.

۴. چطور می‌تونم شبکه‌ها و ولوم‌ها رو تعریف کنم؟

شبکه‌ها و ولوم‌ها رو می‌تونید داخل فایل docker-compose.yml تعریف کنید. مثلا:

networks:
  frontend:
  backend:
volumes:
  db-data:

۵. چطور می‌تونم پروژه‌هام رو مقیاس‌پذیر کنم؟

برای مقیاس‌پذیری پروژه‌ها، می‌تونید از داکر سوارم یا کوبرنیتس استفاده کنید. با استفاده از این ابزارها، می‌تونید چندین کانتینر رو روی چندین سرور به صورت توزیع‌شده اجرا کنید.

جمع‌بندی

داکر کامپوز یه ابزار فوق‌العاده برای مدیریت کانتینرهاست که زندگی توسعه‌دهندگان رو خیلی راحت‌تر کرده. با داکر کامپوز می‌تونید سرویس‌های مختلف رو به راحتی تعریف و مدیریت کنید، پروژه‌هاتون رو مقیاس‌پذیر کنید و از ابزارهای جانبی برای مدیریت بهتر استفاده کنید. حالا که با داکر کامپوز آشنا شدی، وقتشه دست به کار بشی و پروژه‌هات رو با این ابزار قدرتمند اجرا کنی. موفق باشی!

۰ دیدگاه
ما همه سوالات و دیدگاه‌ها رو می‌خونیم و پاسخ میدیم
  • تاریخچه داکر و داکر کامپوز
  • شروع کار با داکر کامپوز
  • تعریف پروژه با داکر کامپوز
  • شبکه‌ها و ولوم‌ها
  • مقیاس‌پذیری با داکر کامپوز
  • ابزارهای جانبی برای مدیریت داکر کامپوز
  • رفع مشکلات و خطاهای رایج
  • نمونه پروژه‌های پرکاربرد با داکر کامپوز
  • مزایا و معایب داکر کامپوز
  • سوالات متداول
  • جمع‌بندی
اشتراک گذاری مقاله در :