Docker Compose چیست؟ آموزش داکر کامپوز و دستورات کاربردی

Docker Compose چیست؟ آموزش داکر کامپوز و دستورات کاربردی

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

داکر کامپوز چیست؟

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

برای مثال، یک وب‌سایت ممکن است از سه بخش تشکیل شده باشد:

  • کانتینر برنامه اصلی
  • کانتینر پایگاه داده MySQL یا PostgreSQL
  • کانتینر Nginx برای دریافت درخواست‌ها

در چنین شرایطی، آموزش Docker Compose به شما کمک می‌کند تمام این سرویس‌ها را در قالب یک پروژه مدیریت کنید.

در واقع، داکر کامپوز لایه‌ای برای مدیریت چند کانتینر است و خودش جایگزین Docker نیست. برای درک بهتر این موضوع، ابتدا باید با مفهوم پایه « Docker چیست» آشنا باشید.

Docker Compose چگونه کار می‌کند؟

Docker Compose تنظیمات سرویس‌های پروژه را از یک فایل YAML می‌خواند. این فایل compose.yaml یا docker-compose.ymlنام دارد.

فرض کنید می‌خواهیم یک برنامه ساده با Nginx و Redis اجرا کنیم. یک فایل Compose می‌تواند به شکل زیر باشد:

services:

  web:

    image: nginx:latest

    ports:

      - 8080:80

  redis:

    image: redis:latest

در این مثال دو سرویس داریم:

– web: یک کانتینر Nginx

– redis: یک کانتینر Redis

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

برای اجرای پروژه کافی است در پوشه فایل Compose دستور زیر را اجرا کنید:

docker compose up

برای اجرای سرویس‌ها در پس‌زمینه نیز می‌توانید از “-d” استفاده کنید:

docker compose up -d

به این ترتیب، به جای اجرای چند دستور Docker، کل مجموعه سرویس‌ها با یک فرمان بالا می‌آید.

فایل Docker Compose چیست؟

فایل Docker Compose چیست؟

فایل Docker Compose یک فایل پیکربندی با فرمت YAML است که مشخص می‌کند پروژه از چه سرویس‌هایی تشکیل شده و هر سرویس با چه تنظیماتی اجرا شود.

یک نمونه کاربردی‌تر:

services:

  app:

    image: nginx:latest

    ports:

      - 8080:80

    volumes:

      - ./html:/usr/share/nginx/html

  db:

    image: mysql:8.0

    environment:

      MYSQL_ROOT_PASSWORD: example

      MYSQL_DATABASE: myapp

در این فایل، بخش services سرویس‌های پروژه را مشخص می‌کند.

image

مشخص می‌کند کانتینر از چه Imageای ساخته شود:

image: nginx:latest

ports

برای اتصال پورت سرور به پورت داخل کانتینر استفاده می‌شود:

ports:

  - 8080:80

در این مثال، درخواست‌های پورت 8080 سرور به پورت 80 کانتینر منتقل می‌شوند.

volumes

برای اتصال فایل‌ها یا پوشه‌های سیستم به کانتینر کاربرد دارد:

volumes:

  - ./html:/usr/share/nginx/html

environment

برای تعریف متغیرهای محیطی سرویس استفاده می‌شود:

environment:

  MYSQL_DATABASE: myapp

بنابراین، در آموزش داکر کامپوز آشنایی با ساختار فایل YAML اهمیت زیادی دارد؛ زیرا بخش زیادی از مدیریت پروژه از همین فایل انجام می‌شود.

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

مهم‌ترین مزیت Docker Compose این است که مدیریت برنامه‌های چندکانتینری را ساده می‌کند.

اجرای چند سرویس با یک دستور

به جای اجرای جداگانه کانتینرها، می‌توانید کل پروژه را با این دستور اجرا کنید:

docker compose up -d

پیکربندی یکپارچه

تنظیمات سرویس‌ها، پورت‌ها، Volumeها، شبکه‌ها و متغیرهای محیطی در یک فایل قرار می‌گیرند.

ایجاد محیط توسعه مشابه

اعضای یک تیم می‌توانند فایل Compose یکسانی داشته باشند و تقریباً همان محیط توسعه را روی سیستم خود ایجاد کنند.

مدیریت آسان‌تر وابستگی‌ها

وقتی یک برنامه به سرویس‌هایی مانند Redis، PostgreSQL یا MySQL نیاز دارد، Compose امکان تعریف همه آن‌ها را در یک پروژه فراهم می‌کند.

مناسب برای VPS

Docker Compose برای اجرای سرویس‌های مختلف روی سرور مجازی لینوکس نیز کاربرد زیادی دارد. برای مثال می‌توانید یک VPS را به محیطی برای اجرای برنامه، پایگاه داده، Redis و Nginx تبدیل کنید. اگر قصد دارید چنین محیطی را روی یک سرور راه‌اندازی کنید، انتخاب منابع مناسب هنگام خرید VPS اهمیت دارد.

مهم‌ترین دستورات Docker Compose

مهم‌ترین دستورات Docker Compose

در آموزش Docker Compose شناخت دستورات اصلی اهمیت زیادی دارد. چند دستور پرکاربرد عبارت‌اند از:

اجرای سرویس‌ها

docker compose up

برای اجرای سرویس‌ها در پس‌زمینه:

docker compose up -d

متوقف کردن سرویس‌ها

docker compose stop

این دستور کانتینرها را متوقف می‌کند اما آن‌ها را حذف نمی‌کند.

متوقف کردن و حذف پروژه

docker compose down

این دستور کانتینرها و شبکه‌های ایجادشده توسط Compose را حذف می‌کند.

مشاهده وضعیت سرویس‌ها

docker compose ps

با این دستور می‌توانید وضعیت کانتینرهای پروژه را مشاهده کنید.

مشاهده لاگ‌ها

docker compose logs

مشاهده لاگ یک سرویس مشخص

docker compose logs app

مشاهده لحظه‌ای لاگ‌ها

docker compose logs -f

ساخت یا دریافت Imageهای موردنیاز

docker compose pull

برای دریافت آخرین Imageهای تعریف‌شده در فایل Compose استفاده می‌شود.

اجرای مجدد سرویس‌ها

docker compose restart

اجرای دستور داخل سرویس

برای ورود به Shell یک کانتینر می‌توانید از exec استفاده کنید:

docker compose exec app sh

دستور دقیق به نوع Image و Shell موجود در آن بستگی دارد.

«نکته: در نسخه‌های جدید Docker، دستور پیشنهادی docker compose است. دستور قدیمی docker-compose همچنان ممکن است در برخی محیط‌ها دیده شود، اما این دو را نباید بدون توجه به نسخه نصب‌شده یکسان فرض کرد.»

تفاوت Docker و Docker Compose چیست؟

تفاوت Docker و Docker Compose چیست؟

Docker و Docker Compose مکمل یکدیگر هستند اما وظیفه یکسانی ندارند.

Docker فناوری و مجموعه ابزارهایی برای ساخت، اجرا و مدیریت کانتینرهاست. شما می‌توانید با Docker یک Image بسازید و یک کانتینر را اجرا کنید اما Docker Compose برای زمانی مناسب است که پروژه از چند سرویس یا کانتینر تشکیل شده باشد و بخواهید تنظیمات آن‌ها را به‌صورت یکپارچه مدیریت کنید.

ویژگی Docker Compose Docker
اجرای کانتینر بله بله
ساخت Image بله از طریق تنظیمات پروژه
مدیریت چند سرویس محدودتر بسیار ساده‌تر
فایل YAML پروژه الزامی نیست معمولا استفاده می‌شود
مدیریت شبکه و Volume بین سرویس‌ها بله ساده‌سازی می‌کند
مناسب برای پروژه چندکانتینری امکان‌پذیر بسیار مناسب

بنابراین اگر فقط یک کانتینر ساده دارید، استفاده مستقیم از Docker می‌تواند کافی باشد؛ اما وقتی چند سرویس دارید، داکر کامپوز مدیریت پروژه را بسیار ساده‌تر می‌کند.

جمع‌بندی

Docker Compose چیست؟ ابزاری برای تعریف و مدیریت برنامه‌هایی است که از چند کانتینر Docker تشکیل شده‌اند. شما می‌توانید تنظیمات سرویس‌ها را در یک فایل YAML قرار دهید و با دستورهایی مانند docker compose up، down و logs کل محیط را مدیریت کنید. مهم‌ترین کاربرد داکر کامپوز، ساده‌کردن مدیریت سرویس‌های وابسته به یکدیگر است؛ برای مثال اجرای هم‌زمان یک برنامه وب، دیتابیس و Redis.

اگر قصد دارید پروژه‌های چندکانتینری را روی سیستم شخصی یا یک VPS اجرا کنید، یادگیری ساختار فایل Compose و دستورات اصلی آن یکی از مهارت‌های کاربردی در کار با Docker محسوب می‌شود.

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

Docker Compose چیست؟

Docker Compose ابزاری برای تعریف، اجرا و مدیریت برنامه‌هایی است که از چند سرویس یا کانتینر Docker تشکیل شده‌اند.

آیا Docker Compose جایگزین Docker است؟

Docker وظیفه اصلی اجرای کانتینرها و مدیریت Imageها را بر عهده دارد و Compose مدیریت مجموعه‌ای از سرویس‌های کانتینری را ساده می‌کند.

فایل Docker Compose با چه فرمتی نوشته می‌شود؟

فایل Compose معمولاً با فرمت YAML نوشته می‌شود و تنظیماتی مانند سرویس‌ها، Imageها، پورت‌ها، Volumeها و متغیرهای محیطی را مشخص می‌کند.

مهم‌ترین دستور Docker Compose چیست؟

دستور “docker compose up -d” یکی از پرکاربردترین دستورات است و سرویس‌های تعریف‌شده را در پس‌زمینه اجرا می‌کند.

آیا Docker Compose روی VPS قابل استفاده است؟

بله. Docker Compose را می‌توان روی سرورهای لینوکسی نصب و برای اجرای برنامه‌های چندکانتینری استفاده کرد. این روش برای مدیریت سرویس‌هایی مانند وب‌سرور، برنامه اصلی و دیتابیس کاربرد زیادی دارد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

شش + دوازده =