Files
shopback/DOCKER_README.md
Beyhan Oğur d9f1ea341e first commit
2026-04-26 22:27:56 +03:00

5.1 KiB
Raw Permalink Blame History

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:
cd /path/to/project
  1. Docker container'ları başlatın:
docker-compose up --build
  1. Tarayıcınızda açın:
http://localhost:8000

Production Ortamı

  1. Environment dosyasını oluşturun:
cp .env.example .env
# .env dosyasını düzenleyin ve gerçek değerleri girin
  1. Production container'ları başlatın:
docker-compose -f docker-compose.prod.yml up --build -d
  1. Nginx üzerinden erişin:
http://localhost

🛠️ Yararlı Komutlar

Container'ları Başlatma

# 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

docker-compose down

# Volume'leri de silmek için
docker-compose down -v

Django Komutları Çalıştırma

# 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ı

# 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

# 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

# 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

# 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

# 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

# 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

# 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.