Ýaýradylan senesi

Bau we Docker ulanyp, garaşsyz Next.js programmasyny gurnamagyň doly ýol görkezmesi

Awtorlar

Next.js-i Bun we Docker bilen nähili ýerleşdirmeli?

Bun 1-nji durnukly wersiýasyny çykaran we Vercel ony paket dolandyryjy hökmünde goldamaga başlan wagty (ýene-de iş wagty üçin Node-a bagly bolsa-da), men gyzyklandym. Vercel ýerleşdirme prosesini ýerli ýagdaýda nähili öwrenmek bolar? Hususan-da, Next.js ýeke-täk programmasyny Bun we Docker bilen nähili ýerleşdirmek bolar? Bu ýol görkezme şu soraglara jogap bermäge gönükdirilendir.

Şertler

  • Docker, Next.js we Bun barada esasy düşünje

  • Node.js guruldy

  • Bun paket dolandyryjy guruldy

Kadamlaýyn ýol görkezme

1-nji Kadam: Dockerfile gurmak

Gerekli doly dockerfile şu ýerde.

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

# Men öz wagtym üçin Asia/Jakarta ulanyp, siz öz wagtyňyza üýtgedip bilersiňiz
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

# Islenýän paket dolandyryjy esasynda baglylyklary gurnap
COPY package.json bun.lockb ./
RUN bun install --frozen-lockfile

# Programmany gurnap
FROM deps AS builder
WORKDIR /app
COPY . .

RUN bun run build


# Önümçilik surat, ähli faýllary göçürip we Next-i işledip
FROM node:18-slim AS runner
WORKDIR /app

ARG CONFIG_FILE
COPY $CONFIG_FILE /app/.env
ENV NODE_ENV production
# Iş wagtynda telemetriýany ýapyk etmek isleýseňiz, aşakdaky setirden çykaryň.
# ENV NEXT_TELEMETRY_DISABLED 1

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

EXPOSE 3001

ENV PORT 3001

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

2-nji Kadam: Özboluşly şel skripti

Bir öz boluly şel skripti ./build.sh dörediň.

#!/bin/bash
set -e

# Berlen argumentler bilen Next.js gurluşyny işledip
next build "$@"

# Faýllary diňe CI gurnama ýagdaýynda däl bolsa göçürip
if [ -z "$CI" ]; then
  cp -r ./public ./.next/standalone/public
  cp -r ./.next/static ./.next/standalone/.next/static
fi

Umumy ýalňyşlar we ýalňyşlyk ýüze çykaran wagty nähili edilmeli

Ilkinji gezek synanyşmakda men käbir kynçylyklar bilen ýüzbe-ýüz boldum, aýratyn-da node: öňyndan gelen ýalňyşlyklar. Men olary imbios/bun-node-y oven/bun esasy surat hökmünde ulanmak arkaly düzetdim. Sebäbi Bun-yň heniz durmuşda ornaşmadyk zatlary üçin bize Node.js-iň goldawy gerek.

Netije

Şu ýol görkezmäniň üstünden geçip, Siz Next.js programmasyny, Vercel ýerleşdirme prosesiniň nusgasynda, Bun we Docker bilen ýerleşdirilen bolmaly. Proýektiňiziň gereklerine görä gurnama üýtgedip we kämilleşdirip bilersiňiz.

Soňra näme?

Eger peýdaly diýip tapsaňyz, şu ýol görkezmäni paýlaşyň we eger sorag ýa-da kämilleşdirme barada pikirleriňiz bolsa, teswir ýazyň. Ýene-de köp zatlar garaşýar!