228 lines
5.1 KiB
Markdown
228 lines
5.1 KiB
Markdown
# Django Projesi - Docker Kurulum Rehberi
|
||
|
||
Bu Django projesi Python 3.14.2 ile dockerize edilmiştir.
|
||
|
||
## 📋 Gereksinimler
|
||
|
||
- Docker
|
||
- Docker Compose
|
||
|
||
## 🚀 Hızlı Başlangıç
|
||
|
||
### Geliştirme Ortamı (Development)
|
||
|
||
1. **Projeyi klonlayın ve dizine girin:**
|
||
```bash
|
||
cd /path/to/project
|
||
```
|
||
|
||
2. **Docker container'ları başlatın:**
|
||
```bash
|
||
docker-compose up --build
|
||
```
|
||
|
||
3. **Tarayıcınızda açın:**
|
||
```
|
||
http://localhost:8000
|
||
```
|
||
|
||
### Production Ortamı
|
||
|
||
1. **Environment dosyasını oluşturun:**
|
||
```bash
|
||
cp .env.example .env
|
||
# .env dosyasını düzenleyin ve gerçek değerleri girin
|
||
```
|
||
|
||
2. **Production container'ları başlatın:**
|
||
```bash
|
||
docker-compose -f docker-compose.prod.yml up --build -d
|
||
```
|
||
|
||
3. **Nginx üzerinden erişin:**
|
||
```
|
||
http://localhost
|
||
```
|
||
|
||
## 🛠️ Yararlı Komutlar
|
||
|
||
### Container'ları Başlatma
|
||
```bash
|
||
# Geliştirme
|
||
docker-compose up
|
||
|
||
# Production
|
||
docker-compose -f docker-compose.prod.yml up -d
|
||
|
||
# Rebuild ile başlatma
|
||
docker-compose up --build
|
||
```
|
||
|
||
### Container'ları Durdurma
|
||
```bash
|
||
docker-compose down
|
||
|
||
# Volume'leri de silmek için
|
||
docker-compose down -v
|
||
```
|
||
|
||
### Django Komutları Çalıştırma
|
||
```bash
|
||
# Migration oluşturma
|
||
docker-compose exec web python manage.py makemigrations
|
||
|
||
# Migration uygulama
|
||
docker-compose exec web python manage.py migrate
|
||
|
||
# Superuser oluşturma
|
||
docker-compose exec web python manage.py createsuperuser
|
||
|
||
# Shell açma
|
||
docker-compose exec web python manage.py shell
|
||
|
||
# Static dosyaları toplama
|
||
docker-compose exec web python manage.py collectstatic
|
||
```
|
||
|
||
### Celery Komutları
|
||
```bash
|
||
# Celery worker loglarını görüntüleme
|
||
docker-compose logs -f celery
|
||
|
||
# Production ortamında
|
||
docker-compose -f docker-compose.prod.yml logs -f celery-atahan
|
||
|
||
# Celery worker'ı yeniden başlatma
|
||
docker-compose restart celery
|
||
|
||
# Celery container'a bağlanma
|
||
docker-compose exec celery bash
|
||
|
||
# Celery task durumlarını kontrol etme (Django shell içinde)
|
||
docker-compose exec web python manage.py shell
|
||
# >>> from django_celery_results.models import TaskResult
|
||
# >>> TaskResult.objects.all()
|
||
```
|
||
|
||
### Logları Görüntüleme
|
||
```bash
|
||
# Tüm servislerin logları
|
||
docker-compose logs -f
|
||
|
||
# Sadece web servisinin logları
|
||
docker-compose logs -f web
|
||
|
||
# Sadece database logları
|
||
docker-compose logs -f db
|
||
```
|
||
|
||
### Container'a Bağlanma
|
||
```bash
|
||
# Web container'a bash ile bağlan
|
||
docker-compose exec web bash
|
||
|
||
# Database container'a bağlan
|
||
docker-compose exec db psql -U server_dj -d server_dj
|
||
```
|
||
|
||
## 📁 Proje Yapısı
|
||
|
||
```
|
||
.
|
||
├── Dockerfile # Ana Docker image tanımı
|
||
├── docker-compose.yml # Geliştirme ortamı yapılandırması
|
||
├── docker-compose.prod.yml # Production ortamı yapılandırması
|
||
├── entrypoint.sh # Container başlatma scripti
|
||
├── nginx.conf # Nginx yapılandırması (production)
|
||
├── .dockerignore # Docker'a dahil edilmeyecek dosyalar
|
||
├── .env.example # Environment değişkenleri şablonu
|
||
└── requirements.txt # Python bağımlılıkları
|
||
```
|
||
|
||
## 🔧 Konfigürasyon
|
||
|
||
### Environment Değişkenleri
|
||
|
||
`.env` dosyasında aşağıdaki değişkenleri ayarlayabilirsiniz:
|
||
|
||
- `DEBUG`: Debug modu (0 veya 1)
|
||
- `SECRET_KEY`: Django secret key
|
||
- `DJANGO_ALLOWED_HOSTS`: İzin verilen host'lar
|
||
- `POSTGRES_DB`: PostgreSQL veritabanı adı
|
||
- `POSTGRES_USER`: PostgreSQL kullanıcı adı
|
||
- `POSTGRES_PASSWORD`: PostgreSQL şifresi
|
||
|
||
### Veritabanı
|
||
|
||
Proje hem SQLite hem de PostgreSQL destekler:
|
||
|
||
- **Development**: SQLite (varsayılan)
|
||
- **Production**: PostgreSQL (docker-compose ile)
|
||
|
||
### Static ve Media Dosyaları
|
||
|
||
- Static dosyalar: `/app/staticfiles`
|
||
- Media dosyaları: `/app/media`
|
||
- Her ikisi de Docker volume'lerinde saklanır
|
||
|
||
## 🔐 Güvenlik
|
||
|
||
Production ortamında:
|
||
|
||
1. `.env` dosyasındaki tüm varsayılan şifreleri değiştirin
|
||
2. `SECRET_KEY` için güçlü bir değer kullanın
|
||
3. `DEBUG=0` olarak ayarlayın
|
||
4. `ALLOWED_HOSTS` değerini doğru domain ile güncelleyin
|
||
5. SSL sertifikası ekleyin (nginx yapılandırmasına)
|
||
|
||
## 📊 Veritabanı Yedekleme
|
||
|
||
### PostgreSQL Backup
|
||
```bash
|
||
# Backup alma
|
||
docker-compose exec db pg_dump -U server_dj server_dj > backup.sql
|
||
|
||
# Backup geri yükleme
|
||
docker-compose exec -T db psql -U server_dj server_dj < backup.sql
|
||
```
|
||
|
||
## 🐛 Sorun Giderme
|
||
|
||
### Port zaten kullanımda
|
||
```bash
|
||
# Port 8000'i kullanan process'i bul
|
||
lsof -i :8000
|
||
|
||
# Veya farklı port kullan
|
||
# docker-compose.yml'de ports kısmını değiştirin
|
||
```
|
||
|
||
### Container başlamıyor
|
||
```bash
|
||
# Logları kontrol et
|
||
docker-compose logs web
|
||
|
||
# Container'ları temizle ve yeniden başlat
|
||
docker-compose down -v
|
||
docker-compose up --build
|
||
```
|
||
|
||
### Static dosyalar yüklenmiyor
|
||
```bash
|
||
# Static dosyaları yeniden topla
|
||
docker-compose exec web python manage.py collectstatic --noinput --clear
|
||
```
|
||
|
||
## 📝 Notlar
|
||
|
||
- İlk çalıştırmada `entrypoint.sh` otomatik olarak:
|
||
- Database migration'larını uygular
|
||
- Admin kullanıcısı oluşturur (admin/admin)
|
||
- Static dosyaları toplar
|
||
|
||
- Development ortamında kod değişiklikleri otomatik olarak yansır (volume mount sayesinde)
|
||
|
||
## 📞 Destek
|
||
|
||
Herhangi bir sorun için issue açabilirsiniz.
|