Waxaa la daabacay

Habka Loogu Dhiso Next.js oo Madaxbannaan oo Loo Adeegsado Docker iyo Build

Qorayaasha

Maxaad Next.js ula Socodsiisaa Bun iyo Docker?

Markii Bun uu gaaray noocii ugu dambeeyay ee 1, Vercelna ay bilaabeen inay taageeraan sida maareeye xirmo (inkasta oo ay wali ku tiirsan yihiin Node si ay u shaqeeyaan), waxaan aad u xiiseeyay. Sidee baad u simi kartaa habka shaqaynta ee Vercel oo ah mid maxalli ah? Gaar ahaan, sidee baad u shaqayn kartaa codsi Next.js oo madaxbanaan oo leh Bun iyo Docker? Tilmaamahaan waxay ka jawaabayaan su'aalahaan.

Shuruudaha

  • Faham aasaasi ah oo ku saabsan Docker, Next.js, iyo Bun

  • Node.js oo la rakibay

  • Bun oo la rakibay

Tilmaame Tallaabo-Tallaabo ah

Tallaabada 1: Sameynta Dockerfile

Halkan waxaa ah dockerfile oo buuxa oo aad u baahan doonto.

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

# Waxaan isticmaalaa Asia/Jakarta sida waqtiygeyga, waxaad bedeli kartaa waqtigaaga
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

# Ku rakib ku tiirsanaanta iyadoo lagu saleynayo maareeyaha xirmada ee la jecel yahay
COPY package.json bun.lockb ./
RUN bun install --frozen-lockfile

# Dhis codsiga
FROM deps AS builder
WORKDIR /app
COPY . .

RUN bun run build


# Sawirka wax soo saarka, koobiyay dhammaan faylasha oo shaqeeyso next
FROM node:18-slim AS runner
WORKDIR /app

ARG CONFIG_FILE
COPY $CONFIG_FILE /app/.env
ENV NODE_ENV production
# Ka saar faallooyinka ku jira sadarradan haddii aad rabto inaad joojiso telemetry inta lagu jiro wakhtiga fulinta.
# ENV NEXT_TELEMETRY_DISABLED 1

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

EXPOSE 3001

ENV PORT 3001

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

Tallaabada 2: Qoraalka Qoraalka caadada ah

Samee qoraal qoraal caado ah ./build.sh.

#!/bin/bash
set -e

# Shaqeeyso dhismaha Next.js iyadoo la adeegsanayo argumentiyada la gudbiyay
next build "$@"

# Koobiyay faylasha oo keliya haddii aan lagu jirin deegaan CI
if [ -z "$CI" ]; then
  cp -r ./public ./.next/standalone/public
  cp -r ./.next/static ./.next/standalone/.next/static
fi

Khaladaha Caadiga ah iyo Xalinta

Waxaan la kulmay qaar ka mid ah caqabadaha markii aan isku dayay markii ugu horeysay, gaar ahaan khaladaha ku bilaabmaya node:. Waxaan saxay iyadoo la isticmaalayo imbios/bun-node halkii laga isticmaali lahaa oven/bun sida sawirka saldhigga ah. Sababtoo ah waxaan u baahannahay Node.js si loogu soo celiyo Bun ee aan wali la fulin.

Gabagabo

Adigoo raacaya tilmaamahaan, waa inaad yeelataa codsi Next.js oo la shaqeysiiyay, oo ku daynaysa habka shaqeynta ee Vercel, oo leh Bun iyo Docker. Isku day inaad bedesho oo aad hagaajiso dejinta iyadoo loo eegayo baahiyaha mashruucaaga.

Maxaa Xiga?

La wadaag tilmaamahaan haddii aad ka heshay mid faa'iido leh oo ka tag sharaxaad haddii aad qabto su'aalo ama hagaajin. Sug si aad u aragto wax badan!