NestJS Projelerini Saniyeler İçinde Deploy Edin
NestJS deploy nasıl yapılır? Kurumsal düzeyde mimariye sahip, TypeScript tabanlı modern Node.js framework'ü olan NestJS projelerini canlıya almak, derleme (build) aşamaları nedeniyle bazen zorlayıcı olabilir. Ancak Flyway ile NestJS hosting ve deploy süreçleri tamamen otomatikleştirilmiştir.
Heroku, Vercel veya Render gibi platformların aksine Flyway; projenizi GitHub üzerinden analiz eder, TypeScript build sürecini sizin yerinize halleder, sıfır yapılandırma (zero-config) prensibiyle saniyeler içinde SSL sertifikalı olarak canlıya alır.
İçindekiler (Bu Rehberde Neler Öğreneceksiniz?)
1. Ön Koşullar (Prerequisites)
NestJS projenizi Flyway üzerinde canlıya almadan önce aşağıdaki gereksinimleri karşıladığınızdan emin olun:
- ✅ Projeniz bir GitHub, GitLab veya Bitbucket deposunda (repository) yüklü olmalıdır.
- ✅ Projenizin kök dizininde standart bir NestJS
package.jsondosyası bulunmalıdır. - ✅ Flyway hesabınıza giriş yapmış ve GitHub entegrasyonunu tamamlamış olmalısınız.
2. Node.js Sürümünün Belirlenmesi (Engines)
NestJS, genellikle Typescript ve modern Node.js özelliklerini yoğun kullanır. Production ortamında lokaldeki Node.js sürümünüzle uyumlu çalışmak için sürümünüzü belirtmeniz tavsiye edilir. Bunu package.json dosyanızdaki engines alanında yapabilirsiniz.
"name": "my-nest-project",
"engines": {
"node": "18.x" // Flyway bu sürüme uygun imajı kullanır
}
}
3. Start Scripti ve TypeScript Build Adımları
Flyway, deponuzda bir build scripti görürse bunu önce otomatik olarak çalıştırır. NestJS projeleri zaten varsayılan olarak "build": "nest build" scriptiyle gelir. Bu aşama sorunsuzdur.
Ancak, Flyway (ve tüm bulut PaaS sistemleri) uygulamayı başlatmak için varsayılan olarak start komutunu arar. Standart bir NestJS projesinde start komutu nest start şeklindedir ve bu production için uygun değildir.
package.json dosyanızdaki start komutunu production build klasörünü (genellikle dist) işaret edecek şekilde güncellemelisiniz.
"build": "nest build", // 1. Flyway önce burayı çalıştırır
"start": "node dist/main", // 2. DİKKAT: Bunu güncelleyin! Flyway prod'da burayı tetikler
"start:dev": "nest start --watch"
}
4. Port Dinleme Kuralları (main.ts)
NestJS projelerinin bulut ortamında çalışmamasının en yaygın sebebi main.ts içerisindeki hatalı port yapılandırmasıdır. Uygulamanız rastgele atanacak dinamik portu okumalı ve bağlantıları 0.0.0.0 host adresi üzerinden kabul etmelidir.
Uygulamanızı sabit bir porta (örneğin 3000) bağlamayın.
process.env.PORT değişkenini okuyun ve 0.0.0.0 dinleyin.
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
// Flyway'in verdiği portu dinliyoruz
await app.listen(process.env.PORT || 3000, '0.0.0.0');
}
bootstrap();
5. Ortam Değişkenleri (.env) Yönetimi
NestJS'in @nestjs/config paketiyle kullandığınız tüm çevresel değişkenleri (TypeORM database URL, JWT secret vs.) koda gömmek yerine Flyway üzerinden güvenle verebilirsiniz.
6. Log Görüntüleme ve Debugging (Crash Loop)
Eğer uygulamanız başarıyla derlenip (build) deploy edildiyse ama sürekli baştan başlıyorsa (Crash Loop), hata kaynağını görmek için canlı logları izlemelisiniz:
- Proje panelinizden Logs sekmesine tıklayın.
- Burada NestJS'in meşhur sarı-yeşil loglarını ve eğer varsa TypeORM veritabanı bağlantı hatalarını canlı (real-time) görebilirsiniz.
7. Sorun Giderme ve Sık Sorulan Sorular
Sık Sorulan Sorular (Kavramsal)
NestJS deploy nasıl yapılır?
Flyway üzerinde yeni proje oluşturun, GitHub deponuzu seçin. Flyway TypeScript build sürecini kendisi halleder ve projenizi SSL sertifikasıyla anında ayağa kaldırır.
Sorun Giderme Tablosu (Hatalar ve Çözümler)
| Hata Mesajı / Belirti | Olası Neden | Çözüm |
|---|---|---|
| Web process failed to bind to $PORT | main.ts dosyasında statik bir porta (örn. 3000) bağlanmaya çalışıyorsunuz. |
Kodu app.listen(process.env.PORT || 3000, '0.0.0.0') olarak güncelleyin. |
| Uygulama çalışıyor ama dışarıdan erişemiyorum | Host 0.0.0.0 olarak belirtilmemiş. Uygulama dış trafiğe kapalıdır. |
listen metoduna ikinci parametre olarak mutlaka '0.0.0.0' ekleyin. |
| TypeORM / Prisma bağlantı hatası | Veritabanı URL'niz hatalı veya Ortam Değişkenleri sekmesinden eklenmemiş. | Flyway panelinden DATABASE_URL ortam değişkenini doğru eklediğinizi kontrol edin. |
İlgili Makaleler
Node.js Ortam Değişkenleri (.env) →
NestJS içindeki hassas verileri ve TypeORM şifrelerini güvenle yönetin.
Express Projelerini Deploy Edin →
Daha minimal olan Express.js projelerinizi Flyway'de ayağa kaldırın.
Hazırsınız! 🚀
Tüm bu ayarlardan sonra kodunuzu pushlamanız yeterli. Flyway, derlemeyi otomatik yapar ve saniyeler içinde sizi özel alan adınızda (Domain) yayına alır.