Railway, backend uygulamaları deploy etmek için en iyi platformlardan biri haline geldi. Hızlıdır, ücretsiz katmanı cömerttir ve PostgreSQL yerleşik olarak gelir. Bu kılavuz, yaklaşık on dakika içinde bir NestJS uygulamasını sıfırdan üretime almanın yolunu gösteriyor.
Ön Koşullar
- GitHub deposunda bir NestJS uygulaması
- Railway hesabı (ücretsiz katman yeterli)
- Veritabanı olarak PostgreSQL (Railway sağlar)
Adım 1: Dockerfile Ekleyin
Railway Node.js projelerini otomatik olarak algılayabilir; ancak Dockerfile derleme üzerinde tam kontrol sağlar. NestJS için üretim için optimize edilmiş bir Dockerfile:
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY --from=builder /app/dist ./dist
EXPOSE 8080
CMD ["node", "dist/main"]
Bu çok aşamalı derleme kullanır — ilk aşama TypeScript'i derler, ikinci aşama yalnızca derlenmiş çıktıyı ve üretim bağımlılıklarını kopyalar. Son görüntü yalın ve hızlı başlar.
Adım 2: Uygulamanızı PORT'u Dinleyecek Şekilde Yapılandırın
Railway, PORT ortam değişkeni aracılığıyla dinamik bir port atar. NestJS main.ts'inizin bunu okuması gerekir:
async function bootstrap() {
const app = await NestFactory.create(AppModule);
const port = process.env.PORT || 3000;
await app.listen(port);
console.log(`Application running on port ${port}`);
}
bootstrap();
Adım 3: Railway Projesi Oluşturun
- railway.app'e gidin ve GitHub ile giriş yapın
- New Project → Deploy from GitHub repo'ya tıklayın
- Deponuzu seçin
- Railway Dockerfile'ı algılayacak ve derlemeye başlayacaktır
Adım 4: PostgreSQL Ekleyin
- Railway projenizde New → Database → PostgreSQL'e tıklayın
- Railway veritabanı oluşturur ve otomatik olarak
DATABASE_URLsağlar - NestJS servisinizde buna başvurun:
process.env.DATABASE_URL
Prisma kullanıyorsanız, istemciyi otomatik oluşturmak için postinstall betiği ekleyin:
// package.json
"scripts": {
"postinstall": "prisma generate",
"build": "nest build"
}
Adım 5: Ortam Değişkenlerini Ayarlayın
Railway'in kontrol panelinde servisinize → Variables'a gidin ve şunları ekleyin:
NODE_ENV=production
JWT_SECRET=your-secret-key
FRONTEND_URL=https://your-frontend.vercel.app
Railway, DATABASE_URL'yi PostgreSQL servisinden otomatik olarak enjekte eder — manuel olarak ayarlamanıza gerek yoktur.
Adım 6: Prisma Migration'larını Çalıştırın
En güvenli yaklaşım, sunucu başlamadan önce migration'ları çalıştırmaktır. Bunu Dockerfile CMD'nize veya bir başlatma betiğine ekleyin:
CMD ["sh", "-c", "npx prisma migrate deploy && node dist/main"]
Ya da servis ayarlarındaki Railway'in Start Command geçersiz kılma özelliğini kullanın.
Adım 7: Özel Domain
- Railway'de servisinize → Settings → Networking → Custom Domain'e gidin
- Domain'inizi girin (ör.
api.yourdomain.com) - DNS sağlayıcınızda Railway'in verdiği host adına işaret eden bir CNAME kaydı ekleyin
- Railway SSL sertifikasını otomatik olarak sağlar
Deployment'ınızı İzleme
Railway, Deployments sekmesinde gerçek zamanlı loglar gösterir. Derlemeniz başarısız olursa loglar tam olarak nedenini söyleyecektir. Yaygın sorunlar:
- PORT ayarlanmamış: Uygulamanızın
process.env.PORT'u okuduğundan emin olun - Prisma client oluşturulmamış: Derleme adımınıza
prisma generateekleyin - Eksik ortam değişkenleri: Variables sekmesinde yazım hatalarını kontrol edin
PromptForge ile Otomatikleştirin
PromptForge tarafından oluşturulan her proje, üretime hazır bir Dockerfile, bir railway.json yapılandırması ve Railway'in PostgreSQL'iyle uyumlu bir Prisma kurulumu içerir. Prompttan deploy edilmiş API'ye 15 dakikanın altında geçebilirsiniz — manuel yapılandırma gerekmez. Ücretsiz deneyin.