- نُشر في
دليل شامل لنشر تطبيقات Next.js المستقلة باستخدام Bun و Docker
- الكتاب
- الاسم
- Imamuzzaki Abu Salam
- https://x.com/ImBIOS_Dev
لماذا نشر Next.js مع Bun و Docker؟
عندما وصل Bun إلى إصداره المستقر 1 وبدأت Vercel في دعمه كمدير حزم (على الرغم من أنه لا يزال يعتمد على Node للتشغيل)، شعرتُ بالفضول. كيف يمكنك محاكاة عملية نشر Vercel محليًا؟ على وجه التحديد، كيف يمكنك نشر تطبيق Next.js مستقل مع Bun و Docker؟ يهدف هذا الدليل إلى الإجابة على هذه الأسئلة.
المتطلبات المسبقة
فهم أساسي لـ Docker و Next.js و Bun
تثبيت Node.js
تثبيت مدير حزم Bun
دليل خطوة بخطوة
الخطوة 1: إعداد Dockerfile
فيما يلي ملف dockerfile
الكامل الذي ستحتاجه.
FROM imbios/bun-node:18-slim AS deps
ARG DEBIAN_FRONTEND=noninteractive
# أنا أستخدم Asia/Jakarta كمنطقة زمنية، يمكنك تغييرها إلى منطقتك الزمنية
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
# تثبيت التبعيات بناءً على مدير الحزم المفضل
COPY package.json bun.lockb ./
RUN bun install --frozen-lockfile
# بناء التطبيق
FROM deps AS builder
WORKDIR /app
COPY . .
RUN bun run build
# صورة الإنتاج، انسخ جميع الملفات وشغل next
FROM node:18-slim AS runner
WORKDIR /app
ARG CONFIG_FILE
COPY $CONFIG_FILE /app/.env
ENV NODE_ENV production
# قم بإلغاء تعليق السطر التالي في حالة رغبتك في تعطيل التلقي أثناء وقت التشغيل.
# ENV NEXT_TELEMETRY_DISABLED 1
COPY /app/.next/standalone ./
EXPOSE 3001
ENV PORT 3001
CMD ["node", "server.js"]
الخطوة 2: نص Shell مخصص
أنشئ نص Shell مخصص ./build.sh.
#!/bin/bash
set -e
# تشغيل Build Next.js مع الوسائط الممررة
next build "$@"
# نسخ الملفات فقط إذا لم تكن في بيئة CI
if [ -z "$CI" ]; then
cp -r ./public ./.next/standalone/public
cp -r ./.next/static ./.next/standalone/.next/static
fi
الأخطاء الشائعة واستكشاف الأخطاء وإصلاحها
واجهت بعض المشكلات أثناء محاولتي الأولى، خاصة الأخطاء التي تبدأ بـ node:. قمت بإصلاحها باستخدام imbios/bun-node
بدلاً من oven/bun
كصورة أساسية. لأننا نحتاج إلى Node.js للعودة إلى الميزات غير المُنفّذة بعد في Bun.
الخاتمة
بمتابعة هذا الدليل، يجب أن يكون لديك تطبيق Next.js مُنشَرًا، مُحاكًا لعملية نشر Vercel، باستخدام Bun و Docker. لا تتردد في تعديل وإضفاء التحسينات على الإعداد وفقًا لاحتياجات مشروعك.
ما هو التالي؟
شارك هذا الدليل إذا وجدته مفيدًا واترك تعليقًا إذا كانت لديك أي أسئلة أو تحسينات. ترقبوا المزيد!