115 lines
3.5 KiB
Markdown
115 lines
3.5 KiB
Markdown
# 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ı
|