مدیریت چند کانتینر با یک فایل
وقتی برنامهی شما از چند سرویس تشکیل شده (مثلاً وبسرور، پایگاهداده، کش)، اجرای دستی هر کدام با docker run و ساختن network و volume بهصورت جداگانه خستهکننده و مستعد خطاست. Docker Compose ابزاری است که تعریف کل این سرویسها را در یک فایل YAML واحد جمع میکند.
version: "3.9"
services:
web:
image: nginx:alpine
ports:
- "8080:80"
cache:
image: redis:7-alpine
هر بلوک زیر services یک کانتینر را توصیف میکند. کلید image ایمیج موردنیاز را مشخص میکند و ports پورت میزبان را به پورت داخل کانتینر متصل میکند؛ در مثال بالا، پورت ۸۰۸۰ سیستم شما به پورت ۸۰ داخل کانتینر nginx وصل میشود.
اجرا و مدیریت
docker compose up -d
docker compose ps
docker compose logs -f web
docker compose down
docker compose up -d همهی سرویسهای تعریفشده را در پسزمینه اجرا میکند و بهطور خودکار یک network مشترک برای آنها میسازد تا بتوانند با نام سرویس به هم متصل شوند. docker compose down همهی کانتینرها و شبکه را متوقف و حذف میکند (ولی volumeها را نگه میدارد مگر با فلگ -v). این فایل واحد، مستندسازی زندهای از معماری کل پروژهی شماست.