- Publikuar më
Udhëzues i plotë për shpërndarjen e aplikacioneve Next.js të pavarura duke përdorur Bun dhe Docker
- Autorët
- Emri
- Imamuzzaki Abu Salam
- https://x.com/ImBIOS_Dev
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 /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ë!