- Diterbitkan pada
Panduan Lengkap untuk Mengedarkan Aplikasi Next.js Berdiri Sendiri Menggunakan Bun dan Docker
- Penulis
- Nama
- Imamuzzaki Abu Salam
- https://x.com/ImBIOS_Dev
Mengapa Membangunkan Next.js dengan Bun dan Docker?
Apabila Bun mencapai versi stabil 1 dan Vercel mula menyokongnya sebagai pengurus pakej (walaupun masih bergantung pada Node untuk masa jalan), saya tertarik. Bagaimana anda boleh mensimulasikan proses pembangunan Vercel secara tempatan? Lebih spesifik, bagaimana anda boleh membangunkan aplikasi Next.js berdiri sendiri dengan Bun dan Docker? Panduan ini bertujuan untuk menjawab soalan-soalan ini.
Prasyarat
Pemahaman asas tentang Docker, Next.js, dan Bun
Node.js dipasang
Pengurus pakej Bun dipasang
Panduan Langkah Demi Langkah
Langkah 1: Menyediakan Dockerfile
Berikut adalah dockerfile
penuh yang anda perlukan.
FROM imbios/bun-node:18-slim AS deps
ARG DEBIAN_FRONTEND=noninteractive
# Saya menggunakan Asia/Jakarta sebagai zon waktu saya, anda boleh menukarnya kepada zon waktu anda
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
# Pasang kebergantungan berdasarkan pengurus pakej yang disukai
COPY package.json bun.lockb ./
RUN bun install --frozen-lockfile
# Bina aplikasi
FROM deps AS builder
WORKDIR /app
COPY . .
RUN bun run build
# Imej pengeluaran, salin semua fail dan jalankan next
FROM node:18-slim AS runner
WORKDIR /app
ARG CONFIG_FILE
COPY $CONFIG_FILE /app/.env
ENV NODE_ENV production
# Nyahkomen baris berikut sekiranya anda ingin melumpuhkan telemetri semasa masa jalan.
# ENV NEXT_TELEMETRY_DISABLED 1
COPY /app/.next/standalone ./
EXPOSE 3001
ENV PORT 3001
CMD ["node", "server.js"]
Langkah 2: Skrip Shell Tersuai
Cipta skrip shell tersuai ./build.sh.
#!/bin/bash
set -e
# Jalankan pembangunan Next.js dengan hujah yang diluluskan
next build "$@"
# Salin fail hanya jika tidak berada dalam persekitaran CI
if [ -z "$CI" ]; then
cp -r ./public ./.next/standalone/public
cp -r ./.next/static ./.next/standalone/.next/static
fi
Kesilapan Umum dan Penyelesaian Masalah
Saya menghadapi beberapa masalah semasa percubaan pertama saya, terutamanya ralat yang berawalan dengan node:. Saya membetulkannya dengan menggunakan imbios/bun-node
dan bukannya oven/bun
sebagai imej asas. Kerana kita memerlukan kejatuhan balik Node.js untuk ciri Bun yang belum dilaksanakan.
Kesimpulan
Dengan mengikuti panduan ini, anda sepatutnya mempunyai aplikasi Next.js yang dimajukan, meniru proses pembangunan Vercel, dengan Bun dan Docker. Berasa bebas untuk menala dan mengoptimumkan konfigurasi mengikut keperluan projek anda.
Apa Seterusnya?
Kongsi panduan ini jika anda mendapati ia berguna dan tinggalkan komen jika anda mempunyai sebarang pertanyaan atau peningkatan. Nantikan lagi!