3.5 KiB
3.5 KiB
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/Dockerfileile custom nginx image build edilir./nginx/default.confdosyası 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_prodalias'ı ile erişilebilir - nginx servisi:
nginx_proxyalias'ı 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)
-
Yeni Proje Oluştur
- Git repository URL'ini ekle
- Branch seç (main/master)
-
Docker Compose Ayarları
- Compose file:
docker-compose.c.ymlseç - Network:
coolify(otomatik oluşturulur)
- Compose file:
-
Environment Variables Ekle
- Yukarıdaki tüm değişkenleri Coolify UI'dan ekle
- SECRET_KEY için güvenli bir anahtar oluştur
-
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.confbuild 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:
docker exec <nginx-container-name> ls -la /etc/nginx/conf.d/ docker exec <nginx-container-name> cat /etc/nginx/conf.d/default.conf - Build loglarında
COPY nginx/default.confadımının başarılı olduğunu doğrulayın
Problem: django_web_prod çözümlenemiyor
Çözüm:
docker-compose.c.ymliçindewebservisinin network alias'ınındjango_web_prodolduğunu kontrol edin- Tüm servisler aynı
coolifynetwork'ü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:
docker exec <web-container-name> python manage.py collectstatic --noinput
Test Komutları
# Nginx config testi
docker exec <nginx-container-name> nginx -t
# Nginx içinden Django'ya erişim testi
docker exec <nginx-container-name> wget -qO- http://django_web_prod:8000
# Container logları
docker logs <container-name> -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ı