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

115 lines
3.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 <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:
```bash
docker exec <web-container-name> python manage.py collectstatic --noinput
```
### Test Komutları
```bash
# 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ı