Yayımlanma tarixi

Müstəqil Next.js tətbiqlərinin Bun və Docker istifadə edərək yayılması üçün tam bələdçi

Müəllif(lər)

Bun və Docker ilə Next.js-in necə yerləşdirilməsi?

Bun stabil versiya 1-ə çatanda və Vercel onu paket meneceri olaraq dəstəkləməyə başlayanda (hələ də runtime üçün Node-a etibar edərək), maraqlandım. Vercel yerləşdirmə prosesini yerli olaraq necə təqlid edə bilərsiniz? Xüsusilə, Bun və Docker ilə Next.js müstəqil tətbiqini necə yerləşdirə bilərsiniz? Bu bələdçi bu suallara cavab vermək üçün hazırlanmışdır.

Ön Şərtlər

  • Docker, Next.js və Bun haqqında əsas anlayış
  • Node.js quraşdırılmış
  • Bun paket meneceri quraşdırılmış

Addım-addım Bələdçi

1-ci Addım: Dockerfile-in Qurulması

İhtiyacınız olacaq tam dockerfile aşağıdakı kimi:

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

# Mən Vaxt zonasını Asia/Jakarta kimi istifadə edirəm, siz onu öz vaxt zonanıza dəyişə bilərsiniz
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

# Seçilmiş paket menecerindən asılı olaraq asılılıqları quraşdırın
COPY package.json bun.lockb ./
RUN bun install --frozen-lockfile

# Tətbiqi yaradın
FROM deps AS builder
WORKDIR /app
COPY . .

RUN bun run build


# İstehsal şəkli, bütün faylları kopyalayın və next çalıştırın
FROM node:18-slim AS runner
WORKDIR /app

ARG CONFIG_FILE
COPY $CONFIG_FILE /app/.env
ENV NODE_ENV production
# Runtime zamanı telemetriyanı söndürmək istəyirsinizsə, aşağıdakı sətri açın.
# ENV NEXT_TELEMETRY_DISABLED 1

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

EXPOSE 3001

ENV PORT 3001

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

2-ci Addım: Xüsusi Shell Skripti

Xüsusi shell skripti ./build.sh yaradın.

#!/bin/bash
set -e

# Keçən arqumentlərlə Next.js quruluşunu çalıştırın
next build "$@"

# Faylları yalnız CI mühitində deyilsə kopyalayın
if [ -z "$CI" ]; then
  cp -r ./public ./.next/standalone/public
  cp -r ./.next/static ./.next/standalone/.next/static
fi

Ümumi Xətalar və Həll Yolları

İlk cəhdim zamanı bəzi problemlərə rast gəldim, xüsusilə node: ilə başlayan xətalar. Bunları imbios/bun-node-u əsas şəkil olaraq oven/bun əvəzinə istifadə edərək düzəltdim. Çünki Bun-un hələ də işləməyən xüsusiyyətləri üçün Node.js ehtiyatına ehtiyacımız var.

Nəticə

Bu bələdçiyə əməl etməklə, Bun və Docker ilə Vercel yerləşdirmə prosesini təqlid edən Next.js tətbiqini yerləşdirməlisiniz. Layihənizə uyğun olaraq quraşdırmanı dəyişdirmək və optimallaşdırmaqda çəkinməyin.

Növbəti nə?

Bu bələdçi sizin üçün faydalı olduqda paylaşın və hər hansı sualınız və ya təkmilləşdirmə təklifiniz varsa, şərh yazın. Daha çox yenilikləri izləyin!