Publikuar më

Udhëzues i plotë për shpërndarjen e aplikacioneve Next.js të pavarura duke përdorur Bun dhe Docker

Autorët

Pse të Shpërndani Next.js me Bun dhe Docker?

Kur Bun arriti versionin e tij stabil 1 dhe Vercel filloi ta mbështeste atë si menaxher pakete (edhe pse ende mbështetet te Node për kohën e ekzekutimit), u intrigova. Si mund të simuloni procesin e shpërndarjes Vercel në vend? Në mënyrë specifike, si mund të shpërndani një aplikacion të pavarur Next.js me Bun dhe Docker? Ky udhëzues synon të përgjigjet këtyre pyetjeve.

Parakushtet

  • Njohuri themelore të Docker, Next.js dhe Bun

  • Node.js i instaluar

  • Bun package manager i instaluar

Udhëzues hap pas hapi

Hapi 1: Konfigurimi i Dockerfile

Këtu është dockerfile i plotë që do t'ju duhet.

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

# Unë përdor Asia/Jakarta si zonën time kohore, ju mund ta ndryshoni atë në zonën tuaj kohore
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

# Instalimi i varësive bazuar në menaxherin e preferuar të paketave
COPY package.json bun.lockb ./
RUN bun install --frozen-lockfile

# Ndërtimi i aplikacionit
FROM deps AS builder
WORKDIR /app
COPY . .

RUN bun run build


# Imazhi i prodhimit, kopjimi i të gjitha skedarëve dhe ekzekutimi i next
FROM node:18-slim AS runner
WORKDIR /app

ARG CONFIG_FILE
COPY $CONFIG_FILE /app/.env
ENV NODE_ENV production
# Komentoni rreshtin vijues nëse dëshironi të çaktivizoni telemetrinë gjatë kohës së ekzekutimit.
# ENV NEXT_TELEMETRY_DISABLED 1

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

EXPOSE 3001

ENV PORT 3001

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

Hapi 2: Skripti i Personalizuar i Shell

Krijoni një skripte të personalizuar të shell ./build.sh.

#!/bin/bash
set -e

# Ekzekutimi i ndërtimit Next.js me argumente të kaluar
next build "$@"

# Kopjimi i skedarëve vetëm nëse nuk është në një mjedis CI
if [ -z "$CI" ]; then
  cp -r ./public ./.next/standalone/public
  cp -r ./.next/static ./.next/standalone/.next/static
fi

Gabime të zakonshme dhe zgjidhja e problemeve

Hasha disa probleme gjatë përpjekjes time të parë, veçanërisht gabime me prefiks node:. I korrigjova ato duke përdorur imbios/bun-node në vend të oven/bun si imazhi bazë. Sepse kemi nevojë për Node.js si rezervë për funksionet që Bun nuk i ka zbatuar ende.

Përfundim

Duke ndjekur këtë udhëzues, duhet të keni një aplikacion Next.js të shpërndarë, që imiton procesin e shpërndarjes Vercel, me Bun dhe Docker. Mos ngurroni të përshtatni dhe optimizoni instalimin sipas nevojave të projektit tuaj.

Çfarë ndodh më tej?

Ndani këtë udhëzues nëse e gjetët të dobishëm dhe lëni një koment nëse keni ndonjë pyetje apo përmirësim. Qëndroni të informuar për më shumë!