اجرای چند سرویس با Docker Compose؛ نمونه عملی
Compose چند کانتینر (وب، دیتابیس، کش) را با یک فایل YAML مدیریت میکند و راهاندازی پروژه را تکرارپذیر میکند.
آخرین بهروزرسانی: ۲۸ مهر ۱۴۰۵ · زمان مطالعه: حدود 3 دقیقه · سطح: کاربردی
- اجرای چند سرویس با Docker Compose؛ نمونه عملی
- Compose را نصب یا بررسی کنید
- با compose up راهاندازی و لاگ را بررسی کنید
چرا این موضوع مهم است؟
موضوع Docker یکی از پایههای نگهداری سرور است. رعایت آن باعث پایداری بیشتر، کاهش ریسک امنیتی و صرفهجویی در زمان پشتیبانی میشود.
هدف این مقاله، اجرای قابل تکرار و امن مراحل روی سرورهای مجازی ایران و اروپاست؛ نه صرفاً کپی چند دستور.
پیشنیازها
- دسترسی SSH با کاربر root یا کاربر دارای sudo
- Ubuntu 22.04/24.04 یا Debian 12 (سازگاری با توزیعهای مشابه)
- نسخه پشتیبان از فایلها و دیتابیسهای مهم
- اطلاعات اتصال و بکاپ دیتابیس MySQL
راهنمای گامبهگام
گام 1 — Compose را نصب یا بررسی کنید
Compose را نصب یا بررسی کنید. برای اطمینان، نتیجه را از یک مسیر دوم (مرورگر، کلاینت یا ابزار مانیتورینگ) هم بررسی کنید.
گام 2 — فایل docker-compose.yml بسازید
فایل docker-compose.yml بسازید. این کار را در بازه کمترافیک انجام دهید و در صورت نیاز کاربران را از قبل مطلع کنید.
گام 3 — سرویس دیتابیس و volume تعریف کنید
سرویس دیتابیس و volume تعریف کنید. این مرحله را با دقت انجام دهید و خروجی دستور را بررسی کنید تا از اعمال درست تغییرات مطمئن شوید.
گام 4 — سرویس وب و شبکه را تعریف کنید
سرویس وب و شبکه را تعریف کنید. پس از اجرا، وضعیت سرویس و لاگها را کنترل کنید؛ تغییر بدون بررسی میتواند خطای پنهان ایجاد کند.
گام 5 — متغیرهای محیطی را در .env بگذارید
متغیرهای محیطی را در .env بگذارید. اگر روی چند سرور کار میکنید، این مورد را یکبار روی محیط تست اجرا و سپس روی تولید اعمال کنید.
گام 6 — با compose up راهاندازی و لاگ را بررسی کنید
با compose up راهاندازی و لاگ را بررسی کنید. مقدارهای نمونه را با اطلاعات واقعی سرور خود جایگزین کنید و از اجرای دستور با مقادیر پیشفرض پرهیز کنید.
نمونه دستورها
services:
web:
image: nginx:alpine
ports: ['8080:80']
db:
image: mysql:8
environment:
MYSQL_ROOT_PASSWORD: CHANGE_MEنکات امنیتی و بهینهسازی
- نسخه پکیجها و سیستمعامل را بهروز نگه دارید؛ بسیاری از نفوذها از نسخههای قدیمی شروع میشوند.
- دسترسیها را حداقلی نگه دارید و فقط پورتها و کاربران لازم را باز بگذارید.
- پیش از هر تغییر بزرگ، نسخه پشتیبان قابل بازیابی تهیه کنید و بازیابی را تست کنید.
خطاهای رایج و راهحل
- قبل از بازگردانی بکاپ، مطمئن شوید نسخه بکاپ با نسخه فعلی سازگار است.
- خطای Permission denied معمولاً به مالکیت یا مجوز فایل مربوط است؛ chmod -R 777 راهحل نیست.
- قبل از بازگردانی بکاپ، مطمئن شوید نسخه بکاپ با نسخه فعلی سازگار است.
سؤالات متداول
تفاوت up و start چیست؟
up کانتینرها و شبکه را میسازد؛ start فقط سرویسهای موجود را اجرا میکند.
چطور داده دیتابیس حفظ میشود؟
با volume نامدار و بکاپ منظم از آن volume یا dump دیتابیس.
میلاد سرور پلنهای اقتصادی سرور مجازی ایران و سرور مجازی آلمان را با آیپی اختصاصی و قیمت شفاف ارائه میکند. برای مقایسه همه کشورها فهرست کامل سرورهای بینالملل را ببینید.
جمعبندی
اگر به منابع بیشتری نیاز دارید، پیش از ارتقای سرور ابتدا گلوگاه واقعی را با متریک مشخص کنید.