first commit
This commit is contained in:
114
COOLIFY_DEPLOYMENT.md
Normal file
114
COOLIFY_DEPLOYMENT.md
Normal file
@@ -0,0 +1,114 @@
|
||||
# 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ı
|
||||
Reference in New Issue
Block a user