- Yayınlandı
Bun ve Docker Kullanarak Bağımsız Bir Next.js Uygulamasının Dağıtımı İçin Tam Kılavuz
- Yazarlar
- Ad
- Imamuzzaki Abu Salam
- https://x.com/ImBIOS_Dev
Neden Bun ve Docker ile Next.js Dağıtımı Yapmalısınız?
Bun kararlı sürüm 1'e ulaştığında ve Vercel, Bun'u paket yöneticisi olarak desteklemeye başlayınca (çalışma zamanı için hala Node'a güvenilir olsa da), oldukça meraklanmıştım. Vercel dağıtım sürecini yerel olarak nasıl simüle edebilirdiniz? Özellikle, Next.js bağımsız bir uygulamasını Bun ve Docker ile nasıl dağıtabilirsiniz? Bu kılavuz, bu sorulara cevap vermeyi amaçlamaktadır.
Ön Koşullar
Docker, Next.js ve Bun'un temel bilgisi
Yüklü Node.js
Yüklü Bun paket yöneticisi
Adım Adım Kılavuz
Adım 1: Dockerfile'ı Ayarlama
İhtiyacınız olan tam dockerfile
şu şekildedir:
FROM imbios/bun-node:18-slim AS deps
ARG DEBIAN_FRONTEND=noninteractive
# Ben zaman dilimi olarak Asia/Jakarta'yı kullanıyorum, siz kendi zaman diliminizi değiştirebilirsiniz
RUN apt-get -y update && \
apt-get install -yq openssl git ca-certificates tzdata && \
ln -fs /usr/share/zoneinfo/Asia/Jakarta /etc/localtime && \
dpkg-reconfigure -f noninteractive tzdata
WORKDIR /app
# Tercih edilen paket yöneticisine göre bağımlılıkları yükleyin
COPY package.json bun.lockb ./
RUN bun install --frozen-lockfile
# Uygulamayı derleyin
FROM deps AS builder
WORKDIR /app
COPY . .
RUN bun run build
# Üretim görüntüsü, tüm dosyaları kopyalayın ve next çalıştırın
FROM node:18-slim AS runner
WORKDIR /app
ARG CONFIG_FILE
COPY $CONFIG_FILE /app/.env
ENV NODE_ENV production
# Çalışma zamanında telemetriyi devre dışı bırakmak isterseniz aşağıdaki satırı yorumdan kaldırın.
# ENV NEXT_TELEMETRY_DISABLED 1
COPY /app/.next/standalone ./
EXPOSE 3001
ENV PORT 3001
CMD ["node", "server.js"]
Adım 2: Özel Shell Scripti
Özel bir shell scripti ./build.sh oluşturun.
#!/bin/bash
set -e
# Geçirilen argümanlarla Next.js derlemesini çalıştırın
next build "$@"
# Dosyaları yalnızca CI ortamında değilse kopyalayın
if [ -z "$CI" ]; then
cp -r ./public ./.next/standalone/public
cp -r ./.next/static ./.next/standalone/.next/static
fi
Ortak Hatalar ve Sorun Giderme
İlk denediğimde özellikle node: önekiyle başlayan bazı sorunlarla karşılaştım. Bun'un henüz uygulanmamış özelliklerinin Node.js geri dönüşüne ihtiyaç duyduğumuz için, temel görüntü olarak oven/bun
yerine imbios/bun-node
kullanarak bunları düzelttim.
Sonuç
Bu kılavuzu izleyerek, Vercel dağıtım sürecini taklit ederek, Bun ve Docker ile dağıtılmış bir Next.js uygulamanıza sahip olmanız gerekir. Projenizin ihtiyaçlarına göre kurulumu ayarlamakta ve optimize etmekte özgürsünüz.
Sonraki Adımlar?
Bu kılavuzu faydalı bulduysanız paylaşın ve herhangi bir sorunuz veya iyileştirmeniz varsa yorum bırakın. Daha fazlası için bizi izlemeye devam edin!