4.7 KiB
4.7 KiB
✅ HAZIR - Coolify Deployment (Port Mapping Kaldırıldı)
🎉 Sorun Çözüldü!
Port 80'i dışarı açma sorunu çözüldü. Coolify kendi reverse proxy'sini kullandığı için ports: mapping'ine ihtiyaç yok.
📋 Final Yapılandırma
✅ Doğru Ayarlar (Şu Anki Durum)
nginx:
expose:
- 80 # ✅ Internal (Coolify için yeterli)
labels:
- "coolify.managed=true" # ✅ Coolify yönetimi
- "coolify.http.port=80" # ✅ Coolify port keşfi
networks:
coolify: # ✅ Coolify network
aliases:
- nginx # ✅ DNS alias'ları
- nginx_proxy
❌ Önceki Hatalı Ayar (Kaldırıldı)
nginx:
ports:
- "80:80" # ❌ KALDIRILDI - Coolify proxy ile conflict
🚀 Deploy - Hemen Şimdi!
# 1. Git push
git add docker-compose.c.yml COOLIFY_NO_PORT_MAPPING.md
git commit -m "Fix: Remove port 80 mapping for Coolify compatibility"
git push
# 2. Coolify'da Redeploy butonuna tıklayın
# 3. Domain'inizden test edin (örn: https://yourdomain.com)
🎯 Neden Bu Çalışacak?
Coolify Proxy Flow:
[Internet]
↓
[Coolify Reverse Proxy - Caddy/Traefik]
↓ (Port 80/443 dışardan dinlenir)
[your-domain.com]
↓
[Internal Network - coolify]
↓
[nginx:80] ← exposed, not published
↓
[django_web_prod:8000] ← upstream backend
↓
[Django App]
Önemli:
- Coolify proxy dışarıdan 80/443 dinler
- Sizin nginx sadece internal network'te 80'de dinler
- Port conflict olmaz! ✅
🔍 Deploy Sonrası Kontrol
# Container durumu
docker ps | grep nginx
# Beklenen çıktı:
# ... 80/tcp ... django_nginx
# (NOT: 0.0.0.0:80->80/tcp OLMAMALI!)
# Internal DNS test
NGINX_ID=$(docker ps | grep nginx | awk '{print $1}')
docker exec $NGINX_ID nslookup django_web_prod
# Internal HTTP test
docker exec $NGINX_ID wget -qO- http://django_web_prod:8000 | head
# Nginx config
docker exec $NGINX_ID nginx -t
# Loglar
docker logs $NGINX_ID --tail 30
✅ Başarı Kriterleri
- ✅
docker ps- Nginx çalışıyor, sadece80/tcpgörünüyor (port mapping YOK) - ✅ Internal DNS -
django_web_prodçözülüyor - ✅ Internal HTTP - Django yanıt veriyor
- ✅ Browser -
https://yourdomain.comaçılıyor - ✅ SSL - Coolify Let's Encrypt sertifikası aktif
- ✅ Static - CSS/JS yükleniyor
- ✅ Media - Görseller görünüyor
📊 Değişiklik Özeti
| Önceki | Şimdi | Durum |
|---|---|---|
ports: - "80:80" |
expose: - 80 |
✅ Düzeltildi |
| Label yok | coolify.managed=true |
✅ Eklendi |
| Label yok | coolify.http.port=80 |
✅ Eklendi |
| Upstream yok | upstream django_backend |
✅ Zaten var |
| Config mount | Config image içinde | ✅ Zaten var |
🐛 Olası Sorunlar ve Çözümler
"502 Bad Gateway" (Coolify domain'den)
Senaryo 1: Coolify nginx'i bulamıyor
# Labels kontrolü
docker inspect $NGINX_ID | grep "coolify"
# Yoksa redeploy edin
Senaryo 2: Nginx Django'ya bağlanamıyor
# DNS test
docker exec $NGINX_ID nslookup django_web_prod
# HTTP test
docker exec $NGINX_ID wget http://django_web_prod:8000
# Loglar
docker logs $NGINX_ID
Senaryo 3: Django çalışmıyor
# Web container
WEB_ID=$(docker ps | grep "web" | grep -v nginx | awk '{print $1}')
docker logs $WEB_ID --tail 50
# Port kontrolü
docker exec $WEB_ID netstat -tuln | grep 8000
"404 Not Found" (Static dosyalar)
# Static volume kontrolü
docker exec $NGINX_ID ls -la /app/staticfiles/
# Collectstatic çalıştır
docker exec $WEB_ID python manage.py collectstatic --noinput
# Nginx config
docker exec $NGINX_ID cat /etc/nginx/conf.d/default.conf | grep "location /static"
📚 Dökümanlar
COOLIFY_NO_PORT_MAPPING.md- Detaylı Coolify rehberi (bu dosya)NGINX_FIX_SUMMARY.md- Nginx-Django bağlantı çözümüCOOLIFY_NGINX_DEBUG.md- Troubleshooting rehberiNGINX_SOLUTION.md- Config image içine gömme çözümü
🎯 Son Durum
✅ docker-compose.c.yml - Port mapping kaldırıldı, Coolify labels eklendi
✅ nginx/default.conf - Upstream stratejisi hazır
✅ nginx/Dockerfile - Config image içinde
✅ Tüm dökümanlar güncellendi
Durum: HAZIR - Coolify'da deploy edilebilir! 🚀
🚨 ÖNEMLI HATIRLATMA
Coolify kullanıyorsanız:
- ❌ ASLA
ports:kullanmayın nginx için - ✅ SADECE
expose:kullanın - ✅ MUTLAKA Coolify labels ekleyin
Yerel Docker Compose kullanıyorsanız:
- ✅
ports:kullanabilirsiniz - Farklı bir compose dosyası kullanın (örn:
docker-compose.yml)
Tarih: 29 Ocak 2026
Durum: ✅ Production Ready - Deploy Edin!