این یک متن ترجمه شده ماشینی است که ممکن است حاوی خطا باشد!
Docker استقرار برنامهها را ساده میکند. به جای نصب و پیکربندی دستی نرمافزار بر روی یک سرور، همه چیز را در فایلهای پیکربندی تعریف میکنید. نتیجه قابل تکرار، قابل حمل و سریع برای راهاندازی است.
Docker Compose چیست؟
با Docker Compose میتوانید چندین سرویس را در یک فایل (docker-compose.yml) تعریف کنید. هر سرویس یک کانتینر با پیکربندی خاص خود است.
services:
web:
image: nginx:latest
ports:
- "80:80"
grafana:
image: grafana/grafana:latest
ports:
- "3000:3000"
یک دستور همه چیز را تنظیم میکند:
docker compose up -d
# Starter tjenestene i bakgrunnen.
# سرویسها را در پسزمینه شروع میکند.
به سرور دیگری نیاز به انتقال سرویس دارید؟ فایل را کپی کنید و همان دستور را اجرا کنید. همه چیز یکسان است.
چرا این اتوماسیون است؟
تفاوت را در نظر بگیرید:
| تنظیم دستی | با Docker Compose |
|---|---|
| نصب دستی Nginx | image: nginx:latest |
| پیکربندی پورتها | ports: "80:80" |
| نصب دستی Grafana | image: grafana/grafana:latest |
| مستندسازی تمام مراحل | همه چیز در فایل .yml مستند شده است |
| تکرار همه چیز در سرور بعدی | docker compose up -d |
فایل Docker Compose خود مستندات است. این دقیقاً توصیف میکند که کدام سرویسها در حال اجرا هستند، از کدام پورتها استفاده میکنند و چگونه پیکربندی شدهاند.
دستورات مفید Docker
| دستور | کاری که انجام میدهد |
|---|---|
docker compose up -d | تمام سرویسها را در پسزمینه شروع میکند |
docker compose down | تمام کانتینرها را متوقف و حذف میکند |
docker compose logs -f | لاگها را بهصورت زنده دنبال میکند |
docker compose pull | آخرین نسخه از تمام ایمیجها را دریافت میکند |
docker compose restart | تمام سرویسها را ریاستارت میکند |
docker ps | کانتینرهای در حال اجرا را نشان میدهد |
Volumes: ذخیره دادهها خارج از کانتینر
کانتینرها موقتی هستند. اگر یک کانتینر را حذف کنید، تمام محتوای آن از بین میرود. برای حفظ دادهها از volumes استفاده میکنیم:
services:
database:
image: postgres:16
ports:
- "5432:5432"
environment:
POSTGRES_PASSWORD: hemmelig # این رمز عبور پایگاه داده است
volumes:
- db-data:/var/lib/postgresql/data
volumes:
db-data:
در اینجا فایلهای پایگاه داده در حجمی به نام `db-data` ذخیره میشوند. حتی اگر کانتینر را حذف و دوباره ایجاد کنید، دادهها همچنان در آنجا خواهند بود.
بهروزرسانی سرویسها
بهروزرسانی یک سرویس Docker ساده است:
# دریافت آخرین نسخه
docker compose pull
# راه اندازی مجدد با نسخه جدید
docker compose up -d
مقایسه کنید این را با بهروزرسانی دستی نرمافزار نصبشده، که ممکن است مجبور شوید دانلود کنید، پیکربندی کنید و امیدوار باشید چیزی خراب نشود.
وظیفه 1 - راه اندازی Nginx با Docker Compose
یک docker-compose.yml ایجاد کنید که یک وب سرور Nginx را اجرا کند:
- یک پوشه جدید ایجاد کنید و فایل
docker-compose.ymlرا ایجاد کنید. - یک سرویس با
image: nginx:latestدر پورت 80 تعریف کنید. - دستور
docker compose up -dرا اجرا کنید. - از
http://localhostدر مرورگر خود بازدید کنید.
وظیفه ۲ - اضافه کردن یک سرویس
docker-compose.yml از وظیفه ۱ را با یک سرویس اضافی گسترش دهید. برای مثال:
- Uptime Kuma روی پورت 3001
- Grafana روی پورت 3000
همه چیز را با docker compose up -d شروع کنید و بررسی کنید که هر دو سرویس به طور همزمان در حال اجرا هستند.
خلاصه
- Docker Compose به شما امکان میدهد چندین سرویس را در یک فایل تعریف کنید
- فایل Compose هم پیکربندی و هم مستندسازی است
- Volumes دادهها را خارج از کانتینر ذخیره میکنند تا از راهاندازی مجدد جان سالم به در ببرند
- بهروزرسانی عبارت است از
docker compose pull+docker compose up -d - Docker انتقال سرویسها بین سرورها را آسان میکند