প্রকাশিত

স্বাধীন নেক্সট.জেএস অ্যাপ্লিকেশন ডেপ্লয় করার জন্য বান এবং ডক্কার ব্যবহার করে সম্পূর্ণ নির্দেশিকা

লেখকগণ

Bun এবং Docker ব্যবহার করে Next.js ডিপ্লয় করার কারণ

যখন Bun এর স্থিতিশীল সংস্করণ 1 প্রকাশিত হল এবং Vercel এটিকে প্যাকেজ ম্যানেজার হিসেবে সমর্থন করতে শুরু করল (যদিও রানটাইমের জন্য Node এখনও নির্ভরশীল), আমি আগ্রহী হয়ে পড়ি। আপনি কিভাবে স্থানীয়ভাবে Vercel ডিপ্লয় প্রক্রিয়া অনুকরণ করতে পারেন? বিশেষ করে, কিভাবে আপনি Bun এবং Docker দিয়ে একটি Next.js স্বাধীন অ্যাপ ডিপ্লয় করতে পারেন? এই নির্দেশিকাটি এই প্রশ্নগুলির উত্তর দিতে চায়।

পূর্বশর্ত

  • Docker, Next.js এবং Bun-এর মৌলিক ধারণার জ্ঞান

  • Node.js ইনস্টল করা

  • Bun প্যাকেজ ম্যানেজার ইনস্টল করা

ধাপে ধাপে নির্দেশিকা

ধাপ 1: Dockerfile সেটআপ করা

এখানে আপনার প্রয়োজনীয় পুরো dockerfile দেওয়া হল।

FROM imbios/bun-node:18-slim AS deps
ARG DEBIAN_FRONTEND=noninteractive

# I use Asia/Jakarta as my timezone, you can change it to your timezone
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

# Install dependencies based on the preferred package manager
COPY package.json bun.lockb ./
RUN bun install --frozen-lockfile

# Build the app
FROM deps AS builder
WORKDIR /app
COPY . .

RUN bun run build


# Production image, copy all the files and run next
FROM node:18-slim AS runner
WORKDIR /app

ARG CONFIG_FILE
COPY $CONFIG_FILE /app/.env
ENV NODE_ENV production
# Uncomment the following line in case you want to disable telemetry during runtime.
# ENV NEXT_TELEMETRY_DISABLED 1

COPY --from=builder  /app/.next/standalone ./

EXPOSE 3001

ENV PORT 3001

CMD ["node", "server.js"]

ধাপ 2: কাস্টম শেল স্ক্রিপ্ট

একটি কাস্টম শেল স্ক্রিপ্ট ./build.sh তৈরি করুন।

#!/bin/bash
set -e

# Run Next.js build with passed arguments
next build "$@"

# Copy files only if not in a CI environment
if [ -z "$CI" ]; then
  cp -r ./public ./.next/standalone/public
  cp -r ./.next/static ./.next/standalone/.next/static
fi

সাধারণ ত্রুটি এবং সমাধান

আমার প্রথম প্রয়াসে কিছু সমস্যার সম্মুখীন হয়েছিলাম, বিশেষ করে node: দিয়ে শুরু হওয়া ত্রুটিগুলি। oven/bun এর পরিবর্তে imbios/bun-node ব্যবহার করে আমি সেগুলি সমাধান করেছি। কারণ Bun-এর এখনও বাস্তবায়িত না হওয়া বৈশিষ্ট্যগুলির জন্য আমাদের Node.js ব্যাকআপের প্রয়োজন।

উপসংহার

এই নির্দেশিকাটি অনুসরণ করে, আপনার Bun এবং Docker ব্যবহার করে একটি Next.js অ্যাপ ডিপ্লয় করা উচিত, Vercel ডিপ্লয় প্রক্রিয়া অনুকরণ করে। আপনার প্রকল্পের প্রয়োজন অনুযায়ী সেটআপটি পরিবর্তন এবং অপ্টিমাইজ করার জন্য বিনা দ্বিধায় ।

পরবর্তী কি?

যদি আপনি এটি উপযোগী বলে মনে করেন তাহলে এই নির্দেশিকাটি শেয়ার করুন এবং আপনার কোনও প্রশ্ন বা উন্নতির জন্য মন্তব্য করুন। আরও জানতে থাকুন!