اگر با پروژههای 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 یک فایل پیکربندی با فرمت 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 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 یک 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 را میتوان روی سرورهای لینوکسی نصب و برای اجرای برنامههای چندکانتینری استفاده کرد. این روش برای مدیریت سرویسهایی مانند وبسرور، برنامه اصلی و دیتابیس کاربرد زیادی دارد.







