# Coolify Deployment Guide - Django Project ## Deployment Yapılandırması ### Gerekli Environment Variables (Coolify'da ayarlanmalı): ``` SECRET_KEY=your-secret-key-here USE_POSTGRES=1 POSTGRES_DB=your_db_name POSTGRES_USER=your_db_user POSTGRES_PASSWORD=your_db_password POSTGRES_HOST=10.80.80.50 POSTGRES_PORT=5432 DJANGO_ALLOWED_HOSTS=your-domain.com,www.your-domain.com CELERY_BROKER_URL=redis://redis:6379/0 CELERY_RESULT_BACKEND=redis://redis:6379/0 ``` ### Docker Compose Dosyası - **Kullanılacak Dosya**: `docker-compose.c.yml` - **Network**: `coolify` (external) - **Port**: 8400 (nginx) ### Önemli Notlar #### 1. Nginx Configuration - `./nginx/Dockerfile` ile custom nginx image build edilir - `./nginx/default.conf` dosyası **build sırasında image içine COPY edilir** (mount edilmez) - Bu sayede Coolify'da volume mount sorunları yaşanmaz - Proxy hedefi: `django_web_prod:8000` (network alias kullanılır) #### 2. Network Aliases - **web servisi**: `django_web_prod` alias'ı ile erişilebilir - **nginx servisi**: `nginx_proxy` alias'ı ile erişilebilir - Bu alias'lar sayesinde Coolify'ın container isimlerine zaman damgası eklemesi sorun yaratmaz #### 3. Volume Mounts - `static_volume`: Django static dosyaları - `media_volume`: Kullanıcı yüklemeleri - Her iki volume da web, celery ve nginx servisleri arasında paylaşılır #### 4. Healthcheck - Nginx için healthcheck yapılandırılmış - 30 saniye aralıklarla kontrol yapılır - İlk başlangıçta 40 saniye beklenir ### Deployment Adımları (Coolify UI) 1. **Yeni Proje Oluştur** - Git repository URL'ini ekle - Branch seç (main/master) 2. **Docker Compose Ayarları** - Compose file: `docker-compose.c.yml` seç - Network: `coolify` (otomatik oluşturulur) 3. **Environment Variables Ekle** - Yukarıdaki tüm değişkenleri Coolify UI'dan ekle - SECRET_KEY için güvenli bir anahtar oluştur 4. **Build & Deploy** - "Deploy" butonuna tıkla - Build loglarını takip et ### Sorun Giderme #### Problem: nginx container'da /etc/nginx/conf.d boş **Çözüm**: - Artık bu sorun yaşanmaz çünkü `default.conf` build sırasında image içine kopyalanır - Eğer yine de boşsa, nginx image'ının doğru build edildiğini kontrol edin: ```bash docker exec ls -la /etc/nginx/conf.d/ docker exec cat /etc/nginx/conf.d/default.conf ``` - Build loglarında `COPY nginx/default.conf` adımının başarılı olduğunu doğrulayın #### Problem: django_web_prod çözümlenemiyor **Çözüm**: - `docker-compose.c.yml` içinde `web` servisinin network alias'ının `django_web_prod` olduğunu kontrol edin - Tüm servisler aynı `coolify` network'üne bağlı olmalı #### Problem: Static/Media dosyaları yüklenmiyor **Çözüm**: - Volume mount'ların doğru olduğunu kontrol edin - Django collectstatic komutunu çalıştırın: ```bash docker exec python manage.py collectstatic --noinput ``` ### Test Komutları ```bash # Nginx config testi docker exec nginx -t # Nginx içinden Django'ya erişim testi docker exec wget -qO- http://django_web_prod:8000 # Container logları docker logs -f # Network yapısını kontrol docker network inspect coolify ``` ### Port Mapping - **8400**: Nginx (HTTP) - Coolify proxy üzerinden domain'e yönlendirilecek ### Güvenlik Notları - DEBUG=0 production'da - SECRET_KEY her ortam için farklı olmalı - ALLOWED_HOSTS domain'lerinizi içermeli - PostgreSQL credentials güvenli tutulmalı