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

Ç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 --from=builder  /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!