Tüm makaleler
Eğitim

NestJS Uygulamasını 10 Dakikada Railway'e Nasıl Deploy Edilir

Railway'e NestJS + PostgreSQL uygulaması deploy etmek için adım adım kılavuz: ortam değişkenleri, Dockerfile kurulumu ve özel domain'ler dahil.

Murat DUMLU20 Mart 20267 dk okuma

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

  1. railway.app'e gidin ve GitHub ile giriş yapın
  2. New ProjectDeploy from GitHub repo'ya tıklayın
  3. Deponuzu seçin
  4. Railway Dockerfile'ı algılayacak ve derlemeye başlayacaktır

Adım 4: PostgreSQL Ekleyin

  1. Railway projenizde NewDatabasePostgreSQL'e tıklayın
  2. Railway veritabanı oluşturur ve otomatik olarak DATABASE_URL sağlar
  3. 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

  1. Railway'de servisinize → SettingsNetworkingCustom Domain'e gidin
  2. Domain'inizi girin (ör. api.yourdomain.com)
  3. DNS sağlayıcınızda Railway'in verdiği host adına işaret eden bir CNAME kaydı ekleyin
  4. 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 generate ekleyin
  • 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.

AI ile SaaS'ınızı oluşturmaya hazır mısınız?

Tek bir prompttan eksiksiz bir NestJS + Prisma backend oluşturun — ücretsiz deneyin.

Ücretsiz başla