first commit
This commit is contained in:
331
DOCKER_CELERY_QUICKSTART.md
Normal file
331
DOCKER_CELERY_QUICKSTART.md
Normal file
@@ -0,0 +1,331 @@
|
||||
# 🐳 Docker Compose ile Celery - Hızlı Başlangıç
|
||||
|
||||
Bu döküman, Docker Compose ile Celery'yi hızlıca çalıştırmak için gerekli adımları içerir.
|
||||
|
||||
## ✅ Hazırlık
|
||||
|
||||
1. **Docker ve Docker Compose yüklü olmalı**
|
||||
2. **Redis erişimi olmalı** (CELERY_BROKER_URL)
|
||||
|
||||
## 🚀 Development Ortamı
|
||||
|
||||
### Başlatma
|
||||
|
||||
```bash
|
||||
# Tüm servisleri başlat (Django + Celery)
|
||||
docker-compose up
|
||||
|
||||
# Arka planda çalıştır
|
||||
docker-compose up -d
|
||||
|
||||
# Logları takip et
|
||||
docker-compose logs -f
|
||||
|
||||
# Sadece Celery logları
|
||||
docker-compose logs -f celery
|
||||
```
|
||||
|
||||
### Test Etme
|
||||
|
||||
```bash
|
||||
# 1. Contact API'yi test et
|
||||
curl -X POST http://localhost:8000/api/v1/contact/create/ \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"name": "Test User",
|
||||
"email": "test@example.com",
|
||||
"subject": "Test Subject",
|
||||
"message": "This is a test message."
|
||||
}'
|
||||
|
||||
# 2. Celery loglarını kontrol et
|
||||
docker-compose logs -f celery
|
||||
|
||||
# 3. Email'i MailPit'te kontrol et
|
||||
open http://localhost:8025
|
||||
```
|
||||
|
||||
### Durdurma
|
||||
|
||||
```bash
|
||||
# Servisleri durdur
|
||||
docker-compose down
|
||||
|
||||
# Volume'leri de sil
|
||||
docker-compose down -v
|
||||
```
|
||||
|
||||
## 🌐 Production Ortamı
|
||||
|
||||
### Hazırlık
|
||||
|
||||
```bash
|
||||
# .env dosyası oluştur
|
||||
cp .env.example .env
|
||||
|
||||
# .env dosyasını düzenle
|
||||
nano .env
|
||||
|
||||
# Gerekli değerler:
|
||||
# - SECRET_KEY
|
||||
# - DJANGO_ALLOWED_HOSTS
|
||||
# - CELERY_BROKER_URL
|
||||
# - POSTGRES_* (database ayarları)
|
||||
```
|
||||
|
||||
### Başlatma
|
||||
|
||||
```bash
|
||||
# Tüm servisleri başlat (Django + Celery + Nginx)
|
||||
docker-compose -f docker-compose.prod.yml up -d
|
||||
|
||||
# Build ile başlat
|
||||
docker-compose -f docker-compose.prod.yml up --build -d
|
||||
|
||||
# Logları kontrol et
|
||||
docker-compose -f docker-compose.prod.yml logs -f
|
||||
|
||||
# Celery logları
|
||||
docker-compose -f docker-compose.prod.yml logs -f celery-atahan
|
||||
```
|
||||
|
||||
### Servis Durumları
|
||||
|
||||
```bash
|
||||
# Container durumlarını kontrol et
|
||||
docker-compose -f docker-compose.prod.yml ps
|
||||
|
||||
# Kaynak kullanımı
|
||||
docker stats
|
||||
```
|
||||
|
||||
### Durdurma
|
||||
|
||||
```bash
|
||||
# Servisleri durdur
|
||||
docker-compose -f docker-compose.prod.yml down
|
||||
|
||||
# Yeniden başlat
|
||||
docker-compose -f docker-compose.prod.yml restart
|
||||
|
||||
# Sadece Celery'yi yeniden başlat
|
||||
docker-compose -f docker-compose.prod.yml restart celery-atahan
|
||||
```
|
||||
|
||||
## 🔧 Yararlı Komutlar
|
||||
|
||||
### Migrations
|
||||
|
||||
```bash
|
||||
# Development
|
||||
docker-compose exec web python manage.py makemigrations
|
||||
docker-compose exec web python manage.py migrate
|
||||
|
||||
# Production
|
||||
docker-compose -f docker-compose.prod.yml exec web-atahan python manage.py migrate
|
||||
```
|
||||
|
||||
### Django Shell
|
||||
|
||||
```bash
|
||||
# Development
|
||||
docker-compose exec web python manage.py shell
|
||||
|
||||
# Production
|
||||
docker-compose -f docker-compose.prod.yml exec web-atahan python manage.py shell
|
||||
```
|
||||
|
||||
### Celery Container'a Bağlanma
|
||||
|
||||
```bash
|
||||
# Development
|
||||
docker-compose exec celery bash
|
||||
|
||||
# Production
|
||||
docker-compose -f docker-compose.prod.yml exec celery-atahan bash
|
||||
```
|
||||
|
||||
### Task Sonuçlarını Görme
|
||||
|
||||
```bash
|
||||
# Shell aç
|
||||
docker-compose exec web python manage.py shell
|
||||
|
||||
# Shell içinde:
|
||||
from django_celery_results.models import TaskResult
|
||||
TaskResult.objects.all()
|
||||
TaskResult.objects.filter(status='SUCCESS')
|
||||
TaskResult.objects.order_by('-date_done')[:10]
|
||||
```
|
||||
|
||||
## 📊 İzleme
|
||||
|
||||
### Container Logları
|
||||
|
||||
```bash
|
||||
# Tüm servisler (Development)
|
||||
docker-compose logs -f
|
||||
|
||||
# Tüm servisler (Production)
|
||||
docker-compose -f docker-compose.prod.yml logs -f
|
||||
|
||||
# Son 100 satır
|
||||
docker-compose logs --tail=100 celery
|
||||
|
||||
# Belirli zaman aralığı
|
||||
docker-compose logs --since 2026-01-15T10:00:00 celery
|
||||
```
|
||||
|
||||
### Celery İstatistikleri
|
||||
|
||||
```bash
|
||||
# Aktif task'lar
|
||||
docker-compose exec celery celery -A core inspect active
|
||||
|
||||
# Worker istatistikleri
|
||||
docker-compose exec celery celery -A core inspect stats
|
||||
|
||||
# Kayıtlı task'lar
|
||||
docker-compose exec celery celery -A core inspect registered
|
||||
```
|
||||
|
||||
### Django Admin
|
||||
|
||||
1. **Admin panele gir:**
|
||||
- Development: http://localhost:8000/admin/
|
||||
- Production: http://your-domain.com/admin/
|
||||
|
||||
2. **Task sonuçlarını gör:**
|
||||
- Django Celery Results → Task results
|
||||
|
||||
3. **Periyodik task'ları yönet:**
|
||||
- Django Celery Beat → Periodic tasks
|
||||
|
||||
## 🐛 Sorun Giderme
|
||||
|
||||
### Celery Çalışmıyor
|
||||
|
||||
```bash
|
||||
# 1. Logları kontrol et
|
||||
docker-compose logs celery
|
||||
|
||||
# 2. Container durumunu kontrol et
|
||||
docker-compose ps
|
||||
|
||||
# 3. Container'ı yeniden başlat
|
||||
docker-compose restart celery
|
||||
|
||||
# 4. Rebuild et
|
||||
docker-compose up --build celery
|
||||
```
|
||||
|
||||
### Email Gönderilmiyor
|
||||
|
||||
```bash
|
||||
# 1. Celery loglarını kontrol et
|
||||
docker-compose logs -f celery
|
||||
|
||||
# 2. MailPit çalışıyor mu? (Development)
|
||||
open http://localhost:8025
|
||||
|
||||
# 3. Email ayarlarını kontrol et
|
||||
docker-compose exec web python manage.py shell
|
||||
>>> from django.conf import settings
|
||||
>>> print(settings.EMAIL_BACKEND)
|
||||
>>> print(settings.EMAIL_HOST)
|
||||
```
|
||||
|
||||
### Redis Bağlantı Hatası
|
||||
|
||||
```bash
|
||||
# Environment variable'ları kontrol et
|
||||
docker-compose exec celery env | grep CELERY
|
||||
|
||||
# Redis bağlantısını test et
|
||||
docker-compose exec celery python -c "
|
||||
from django.conf import settings
|
||||
print(settings.CELERY_BROKER_URL)
|
||||
"
|
||||
```
|
||||
|
||||
## 📚 Servis Portları
|
||||
|
||||
### Development
|
||||
- **Django**: http://localhost:8000
|
||||
- **MailPit UI**: http://localhost:8025
|
||||
- **MailPit SMTP**: localhost:1025
|
||||
|
||||
### Production
|
||||
- **Nginx**: http://localhost:8077
|
||||
- **Django (Direct)**: http://localhost:8800
|
||||
|
||||
## 🔐 Environment Variables
|
||||
|
||||
### Development (.env veya docker-compose.yml)
|
||||
```bash
|
||||
DEBUG=1
|
||||
CELERY_BROKER_URL=redis://default:password@host:6379/5
|
||||
CELERY_RESULT_BACKEND=django-db
|
||||
POSTGRES_DB=server_dj
|
||||
POSTGRES_USER=server_dj
|
||||
POSTGRES_PASSWORD=1234
|
||||
POSTGRES_HOST=10.80.80.50
|
||||
POSTGRES_PORT=5432
|
||||
```
|
||||
|
||||
### Production (.env)
|
||||
```bash
|
||||
DEBUG=0
|
||||
SECRET_KEY=your-secret-key-here
|
||||
DJANGO_ALLOWED_HOSTS=yourdomain.com
|
||||
CELERY_BROKER_URL=redis://default:password@host:6379/5
|
||||
CELERY_RESULT_BACKEND=django-db
|
||||
POSTGRES_DB=your-db
|
||||
POSTGRES_USER=your-user
|
||||
POSTGRES_PASSWORD=your-password
|
||||
POSTGRES_HOST=your-host
|
||||
POSTGRES_PORT=5432
|
||||
```
|
||||
|
||||
## 📖 Detaylı Dökümanlar
|
||||
|
||||
- **DOCKER_CELERY.md** - Celery kullanımı hakkında detaylı bilgi
|
||||
- **DOCKER_README.md** - Docker genel kullanımı
|
||||
- **CONTACT_EMAIL_SETUP.md** - Contact email kurulumu
|
||||
|
||||
## 🎯 Önemli Notlar
|
||||
|
||||
1. ✅ **Celery worker ve beat** aynı container'da çalışır
|
||||
2. ✅ **Redis** harici olarak çalışmalı (CELERY_BROKER_URL)
|
||||
3. ✅ **PostgreSQL** harici olarak çalışmalı
|
||||
4. ✅ **MailPit** development için email testleri sağlar
|
||||
5. ✅ Production'da gerçek SMTP kullanın
|
||||
|
||||
## 🚨 İlk Başlatmada Yapılacaklar
|
||||
|
||||
```bash
|
||||
# 1. Servisleri başlat
|
||||
docker-compose up -d
|
||||
|
||||
# 2. Migration'ları uygula
|
||||
docker-compose exec web python manage.py migrate
|
||||
|
||||
# 3. Superuser oluştur
|
||||
docker-compose exec web python manage.py createsuperuser
|
||||
|
||||
# 4. Static dosyaları topla (Production)
|
||||
docker-compose exec web python manage.py collectstatic --noinput
|
||||
|
||||
# 5. Test et
|
||||
curl -X POST http://localhost:8000/api/v1/contact/create/ \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"name":"Test","email":"test@test.com","subject":"Test","message":"Test"}'
|
||||
|
||||
# 6. Logları kontrol et
|
||||
docker-compose logs -f celery
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**Yardım**: Sorun yaşarsanız `DOCKER_CELERY.md` dosyasına bakın veya logları kontrol edin.
|
||||
|
||||
Reference in New Issue
Block a user