PHP, Laravel ve Node.js için ayrı deploy karar ağacı.
Üç uygulama da “web sitesi” olabilir ama production ihtiyaçları aynı değildir. Laravel queue/scheduler ve migration ister; Node.js process/health davranışı farklıdır; klasik PHP’de document root ve PHP-FPM ayarı öne çıkar.
Database migration’ı her restart’ta otomatik çalıştırmayın. Birden fazla replica aynı migration’ı eşzamanlı başlatabilir; deploy pipeline’da tek kontrollü adım kullanın.
Deploy stratejisini framework’e göre seçin. Her uygulama için build komutu, start process, port, health endpoint, persistent path ve secret listesi önceden tanımlanırsa Coolify yalnız “container çalıştıran panel” değil güvenilir deployment katmanı olur.
Deploy stratejisini framework’e göre seçin. Her uygulama için build komutu, start process, port, health endpoint, persistent path ve secret listesi önceden tanımlanırsa Coolify yalnız “container çalıştıran panel” değil güvenilir deployment katmanı olur.
Coolify’de PHP, Laravel ve Node.js projelerini aynı reçeteyle değil runtime’a göre yayınlayın. Buildpack/Dockerfile, env, queue, scheduler, healthcheck, migration ve rollback örnekleri.
PHP, Laravel ve Node.js için ayrı deploy karar ağacı.
Yeni container trafiğe girmeden önce uygulama health endpoint’i cevap vermeli.
`.env` dosyasını repo’ya gömmek yerine platform secret/env yönetimini kullanın.
Başarılı deploy kadar önceki release’e dönüş de test edilmelidir.
Projeyi Coolify’e eklemeden önce hangi process’in port dinlediğini, hangi dosyanın kalıcı olduğunu ve build’in nerede yapıldığını yazın.
| Uygulama | Build | Process | Kalıcı veri | ||
|---|---|---|---|---|---|
| Klasik PHP | Composer/asset olabilir | Nginx/Apache + PHP-FPM | uploads | ||
| Laravel | Composer + frontend | Web + queue + scheduler | storage/uploads | ||
| Node.js | Node.js | Node.js | npm/pnpm/yarn build | node/pm2/framework server | Genelde stateless; app’e bağlı |
Legacy PHP uygulamalarında `public_html`, `/public` veya proje kökü varsayımları değişebilir. Yanlış root kaynak kodunu web’den erişilebilir yapabilir.
Queue worker’ı web container lifecycle’ına körü körüne bağlamak deploy sırasında yarım kalan job’lar yaratabilir. Scheduler için tek-instance davranışını koruyun.
php artisan aboutphp artisan config:cachephp artisan route:cachephp artisan queue:restartphp artisan migrate --forceNext.js/Vite gibi araçlarda bazı değişkenler build sırasında bundle’a gömülür; runtime secret ile aynı davranmaz. Hangi env’in build-time olduğunu dokümante edin.
node --versionnpm --versionnpm cinpm run buildnpm run startLiveness endpoint process’in yaşadığını, readiness endpoint ise trafiğe hazır olduğunu gösterebilir. Database kesildiğinde her iki sinyalin aynı davranması gerekmez.
| Endpoint | Amaç | DB kontrolü |
|---|---|---|
| /live | Process ayakta mı? | Genellikle hayır |
| /ready | Trafik alabilir mi? | Gerekirse evet |
Backward-compatible schema değişikliği → yeni app → eski column cleanup gibi expand/contract yaklaşımı downtime ve rollback riskini azaltır.
Eski container’a dönmek, database migration veya kullanıcı upload’larını otomatik geri almaz. Release rollback ile data rollback ayrı prosedürdür.
PHP/Laravel/Node.js uygulamalarınız için build süresi, queue ve database yüküne göre uygun Eka Sunucu VPS kaynağını planlayabilirsiniz.
Rehber hazırlanırken esas alınan birincil dokümantasyon ve teknik kaynaklar.
İlgili altyapı ve uygulama rehberleriyle devam edin.
Coolify App Deploy
Production’da web process’ten ayrı lifecycle ve scaling ihtiyacı olduğu için ayrı process/service olarak yönetmek genellikle daha kontrollüdür.
Uygulamanın platformun beklediği port/environment değerini dinlemesi gerekir; hostta public port açmak çoğu reverse-proxy senaryosunda gerekmez.
Immutable/redeploy edilen container içinde kalıcı veri tutulmamalıdır; volume veya object storage kullanın.
Hayır, container/image rollback ile database rollback ayrı işlemlerdir. Migration stratejisi rollback uyumlu tasarlanmalıdır.