iToverDose/Yazılım· 4 MAYIS 2026 · 20:07

Bun ve TanStack Start Uygulamalarını Railway’e Kolayca Nasıl Yayımlarsınız?

Bun çalışma zamanı ve TanStack Start kullanarak geliştirdiğiniz projeleri Railway’e dağıtmak mı istiyorsunuz? Dockerfile’ın dört aşamalı kurulumu, otomatik derleme sorunlarını çözecek ve uygulamayı veritabanına sorunsuz bağlayacak.

DEV Community3 dk okuma0 Yorumlar

Bun çalışma zamanı ve TanStack Start framework’ünü kullanarak geliştirdiğiniz projelerinizi Railway’e dağıtmak karmaşık görünebilir. Railway’in otomatik derleme sistemi Nixpacks, temel projeleri tanıyabilse de, özel yapılandırma gerektiren projelerde yetersiz kalabiliyor. Özellikle prisma generate komutunun derleme sırasında çalıştırılması, Vite ile TanStack Start eklentisinin entegrasyonu, özel bir server.ts giriş dosyası ve uygulama başlatılırken çalıştırılan prisma migrate deploy komutlarının kombinasyonu, otomatik araçlar tarafından kolayca yönetilemiyor.

Bu süreci basitleştirmenin en etkili yolu, dört aşamalı bir Dockerfile kullanmak. Bu yaklaşım, Railway’in otomatik derleme sistemini bypass ederken, tüm bağımlılıkları ve yapılandırma adımlarını tek bir yerde yönetmenizi sağlıyor. Özellikle Prisma’nın çalışma zamanında kullanılan istemci kodunu doğru şekilde paketleyebilmek ve veritabanı bağlantısını güvenilir bir şekilde sağlamak için bu yöntem oldukça avantajlı.

Dockerfile’ın Dört Aşamalı Yapısı

Dockerfile’ın dört aşamalı yapısı, hem geliştirme hem de üretim ortamlarında tutarlılığı sağlamanın yanı sıra, gereksiz dosyaların son derleme imajına dahil edilmesini de engelliyor. Bu yapı, aşağıdaki gibi organize edilebilir:

  • Birinci Aşama: Tüm Bağımlılıkların Yüklenmesi

Bu aşamada, yalnızca geliştirme bağımlılıkları yüklenir. Bu sayede, üretim imajına sadece gerekli olan paketler dahil edilir. Railway gibi platformlarda, imaj boyutunun küçültülmesi hem dağıtım hızını artırır hem de maliyetleri düşürür.

FROM oven/bun:1 AS deps
WORKDIR /app
COPY package.json bun.lockb ./
RUN bun install --frozen-lockfile
  • İkinci Aşama: Üretim Bağımlılıklarının Yüklenmesi

Bu aşamada, üretim ortamı için gerekli olan bağımlılıklar yüklenir. Prisma’nın istemci kodunu çalıştırmak için gereken paketler bu aşamada kurulur. Ayrıca, node_modules dizini üretim bağımlılıklarıyla doldurulur.

FROM oven/bun:1 AS deps-prod
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY package.json bun.lockb ./
RUN bun install --production --frozen-lockfile
  • Üçüncü Aşama: Derleme İşlemleri

Bu aşamada, prisma generate komutu çalıştırılır. Bu komut, Prisma’nın istemci kodunu oluşturur ve gerekli TypeScript dosyalarını üretir. Derleme sırasında, geçici bir DATABASE_URL kullanılır, böylece üretim veritabanına zarar verme riski ortadan kalkar.

FROM oven/bun:1 AS build
WORKDIR /app
COPY --from=deps-prod /app/node_modules ./node_modules
COPY --from=deps /app/prisma ./prisma
COPY . .

# Geçici veritabanı bağlantısıyla Prisma istemci kodunu oluştur
ENV DATABASE_URL="postgresql://user:pass@localhost:5432/db?schema=public"
RUN bun run prisma generate
  • Dördüncü Aşama: Üretim İmajının Oluşturulması

Bu aşamada, üretim imajı oluşturulur. node_modules dizini, üçüncü aşamada oluşturulan Prisma istemci koduyla birlikte imaja kopyalanır. Ayrıca, uygulamanın giriş noktası olan server.ts dosyası da dahil edilir. Railway’in gereksinimlerine uygun olarak, uygulama 0.0.0.0 adresine bağlanır ve SIGTERM sinyalleriyle temiz bir şekilde kapanır.

FROM oven/bun:1 AS runtime
WORKDIR /app

# Üretim bağımlılıklarını ve Prisma istemci kodunu kopyala
COPY --from=deps-prod /app/node_modules ./node_modules
COPY --from=build /app/node_modules/.prisma ./node_modules/.prisma
COPY --from=build /app/dist ./dist
COPY --from=build /app/server.ts .

# Veritabanı bağlantısını Railway’in ortam değişkenlerine göre ayarla
ENV DATABASE_URL=${{ secrets.DATABASE_URL }}

# Uygulamayı 0.0.0.0 adresine bağla ve SIGTERM sinyallerini yönet
CMD ["bun", "run", "server.ts"]

Railway’e Özel Ayarlamalar

Railway’e özel olarak yapılması gereken birkaç ayar bulunuyor. Öncelikle, Postgres bağlantısını doğru şekilde yapılandırmak gerekiyor. Railway’in ortam değişkenleri aracılığıyla sağlanan Postgres URL’sini kullanmak, veritabanı bağlantısının güvenilirliğini artırıyor. Ayrıca, uygulamanın 0.0.0.0 adresine bağlanması, Railway’in ağ yapısına uyum sağlaması açısından kritik önem taşıyor.

Bunun yanı sıra, Dockerfile’ın COPY komutlarının sırası da oldukça önemlidir. Prisma istemci kodunun doğru şekilde kopyalandığından emin olmak için, node_modules dizininin kopyalanması sırasında dikkatli olunmalıdır. Aksi takdirde, uygulama çalıştırıldığında Prisma istemci koduna erişim sağlanamayabilir.

Sonuç

Bun çalışma zamanı ve TanStack Start framework’ü kullanılarak geliştirilen projelerin Railway’e dağıtılması, ilk bakışta karmaşık görünebilir. Ancak, dört aşamalı bir Dockerfile kullanarak bu süreci basitleştirmek mümkün. Bu yaklaşım, hem bağımlılıkların yönetimini hem de veritabanı bağlantısının güvenilirliğini artırırken, Railway’in gereksinimlerine de uyum sağlıyor. Gelecekte, otomatik derleme sistemleri daha esnek hale geldikçe, bu tür özel yapılandırmalara olan ihtiyaç da azalabilir. Ancak şu an için, Dockerfile’ın dört aşamalı yapısı, projelerinizi Railway’e sorunsuz bir şekilde dağıtmanın en güvenilir yollarından biri olarak öne çıkıyor.

Yapay zeka özeti

Bun çalışma zamanı ve TanStack Start ile geliştirilen projelerinizi Railway’e nasıl dağıtacağınızı adım adım öğrenin. Dört aşamalı Dockerfile rehberiyle otomatik derleme sorunlarını çözün.

Yorumlar

00
YORUM BIRAK
ID #W1WYKD

0 / 1200 KARAKTER

İnsan doğrulaması

8 + 4 = ?

Editör onayı sonrası yayına girer

Moderasyon · Spam koruması aktif

Henüz onaylı yorum yok. İlk yorumu sen bırak.