- Ýaýradylan senesi
Bau we Docker ulanyp, garaşsyz Next.js programmasyny gurnamagyň doly ýol görkezmesi
- Awtorlar
- Ady
- Imamuzzaki Abu Salam
- https://x.com/ImBIOS_Dev
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 /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!