Docker Compose چیست؟
ابزاری برای تعریف و اجرای اپلیکیشنهای چند-Container (مثل API + دیتابیس + کش) با یک فایل YAML واحد و یک دستور اجرا.
چرا مهم است؟
اکثر پروژههای واقعی به بیش از یک Container نیاز دارند (مثلاً API، دیتابیس و Redis)؛ بدون Compose باید هر Container را جدا با دستورات طولانی docker run بالا آورد و به هم متصل کرد.
تعریف
Docker Compose سرویسهای یک اپلیکیشن، شبکه بین آنها و Volume های موردنیازشان را در یک فایل docker-compose.yml توصیف میکند و همه را با یک دستور بالا میآورد.
نمونه docker-compose.yml
services:
api:
build: .
ports:
- "8080:80"
depends_on:
- db
environment:
- ConnectionStrings__Default=Server=db;Database=AppDb;User=sa;Password=Pass123!
db:
image: mcr.microsoft.com/mssql/server:2022-latest
environment:
- ACCEPT_EULA=Y
- SA_PASSWORD=Pass123!
volumes:
- db-data:/var/opt/mssql
volumes:
db-data:
دستورات رایج
docker compose up -d # اجرای همه سرویسها در پسزمینه
docker compose logs -f api # مشاهده لاگ زنده یک سرویس
docker compose down # توقف و حذف Container ها (بدون Volume)
اشتباه رایج
❌ فراموش کردن depends_on یا فرض کردن ترتیب اجرا به معنی «آماده بودن» سرویس است — depends_on فقط ترتیب استارت را تضمین میکند، نه اینکه دیتابیس واقعاً برای اتصال آماده باشد؛ برای این کار باید Healthcheck یا Retry در کد اضافه کرد.
منبع و مطالعه بیشتر
خلاصه
Docker Compose چند Container مرتبط (مثل API و دیتابیس) را با یک فایل YAML و یک دستور بالا میآورد. depends_on فقط ترتیب استارت را تضمین میکند، نه آمادهبودن سرویس؛ برای اتصال مطمئن از Retry/Healthcheck استفاده کنید. مرجع کامل: مستندات رسمی Docker.
