- Weşand li ser
Rêbernameyek tevahî ya li ser bikaranîna Bau û Docker ji bo danîna serîlêdana Next.js-ya serbixwe
- Nivîskar
- Nav
- Imamuzzaki Abu Salam
- https://x.com/ImBIOS_Dev
Çima Next.js bi Bun û Docker were bike?
Dema ku Bun versiyona xwe ya stabîl 1 derxist û Vercel dest bi piştgirîkirina wê wekî rêveberê pakêtê kir (her çend ew hîn jî ji bo demjimêra Node.js-ê bikar tîne), ez heyran bûm. Hûn çawa dikarin pêvajoya bicîhkirina Vercel-ê bi awayekî herêmî bişibînin? Bi taybetî, hûn çawa dikarin serîlêdana Next.js-ya serbixwe bi Bun û Docker bicîh bikin? Ev rêber ji bo bersiva van pirsan e.
Pêdivîyên
Fêmkirina bingehîn a Docker, Next.js û Bun
Node.js hatiye saz kirin
Rêveberê pakêtê Bun hatiye saz kirin
Rêbernameya Gav-bi-gav
Gaveya 1: Sazkirina Dockerfile
Li vir Dockerfileya tam ku hûn pêwîstî pê heye heye.
FROM imbios/bun-node:18-slim AS deps
ARG DEBIAN_FRONTEND=noninteractive
# Ez Asia/Jakarta wekî dema xwe bikar tînim, hûn dikarin wê biguherînin dema xwe
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
# Sazkirina pêwistîyan li gorî rêveberê pakêtê ya bijartî
COPY package.json bun.lockb ./
RUN bun install --frozen-lockfile
# Avakirina serîlêdanê
FROM deps AS builder
WORKDIR /app
COPY . .
RUN bun run build
# Wêneya hilberînê, hemû pel kopî dike û next dimeşîne
FROM node:18-slim AS runner
WORKDIR /app
ARG CONFIG_FILE
COPY $CONFIG_FILE /app/.env
ENV NODE_ENV production
# Tîpa jêrîn bêşîre heke hûn dixwazin telemetrîya di dema demjimêrê de betal bikin.
# ENV NEXT_TELEMETRY_DISABLED 1
COPY /app/.next/standalone ./
EXPOSE 3001
ENV PORT 3001
CMD ["node", "server.js"]
Gaveya 2: Skrîpta xweser a Shell
Skrîpta xweser a shell ./build.sh biafirînin.
#!/bin/bash
set -e
# Avakirina Next.js bi argumanên derbasbûyî dimeşîne
next build "$@"
# Pel tenê kopî bike heke di nav hawîrdora CI de nebe
if [ -z "$CI" ]; then
cp -r ./public ./.next/standalone/public
cp -r ./.next/static ./.next/standalone/.next/static
fi
Xeletiyên hevpar û çareserkirin
Ez di hewldana xwe ya yekem de rastî hin pirsgirêkan hatim, bi taybetî xeletiyên ku bi node: dest pê dikin. Min ew bi karanîna imbios/bun-node
li şûna oven/bun
wekî wêneya bingehîn rast kir. Ji ber ku em pêwîstî bi Node.js-ê ya piştgirî ya ji bo taybetmendiyên Bun-ê yên hîn nehatiye pêkanîn heye.
Encam
Bi şopandina vê rêbernameyê, divê hûn serîlêdana Next.js-ya xwe bicîh bikin, pêvajoya bicîhkirina Vercel-ê bişibînin, bi Bun û Docker. Hûn dikarin wê li gorî pêwîstiyên projeya xwe biguherînin û baştir bikin.
Çi jî jî?
Heke hûn ev rêbername bikêr bûye, wê parve bikin û heke hûn pirs an pêşniyarên baştirkirinê hebin, şîrove bihêlin. Ji bo bêtir zanînan li benda me bin!