Files
dj52/COOLIFY_DEPLOYMENT.md
Beyhan Oğur ec28a2024d first commit
2026-04-26 22:22:29 +03:00

3.5 KiB
Raw Permalink Blame History

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:
    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.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:
    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ı