Mendockerkan Aplikasi React/Next.js
Tulis Dockerfile berbilang peringkat untuk aplikasi Next.js dan jalankannya secara setempat dengan Docker Compose.
Mendockerkan Aplikasi React/Next.js ialah pelajaran React Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran React Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus React Academy merangkumi sejumlah 4 pelajaran.
Mengapa Docker?
Bekas Docker memakejkan aplikasi dan kebergantungannya bersama-sama, lalu memastikan tingkah laku yang konsisten merentasi pembangunan, pementasan dan pengeluaran. Imej yang sama berjalan di mana-mana.
Fail Docker untuk SPA React Biasa
Binaan dua peringkat: Node.js digunakan untuk membina, manakala Nginx digunakan untuk menyediakan keluaran statik.
# Stage 1: Build
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
# Stage 2: Serve with Nginx
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]Konfigurasi Nginx untuk Penghalaan SPA
Konfigurasikan Nginx untuk menyediakan index.html bagi semua laluan (sokongan penghalaan pada pihak klien).
# nginx.conf
server {
listen 80;
root /usr/share/nginx/html;
index index.html;
location / {
try_files $uri $uri/ /index.html; # SPA routing
}
location ~* \.(js|css|png|jpg|woff2)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
}Fail Docker Mod Kendiri Next.js
Next.js 12+ menyokong output: 'standalone', yang menyalin hanya fail yang diperlukan untuk menghasilkan imej pengeluaran yang minimum.
// next.config.js
module.exports = { output: 'standalone' };
# Dockerfile (Next.js standalone)
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:20-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
COPY --from=builder /app/.next/standalone ./
COPY --from=builder /app/.next/static ./.next/static
COPY --from=builder /app/public ./public
EXPOSE 3000
CMD ["node", "server.js"].dockerignore
Kecualikan fail yang tidak diperlukan daripada konteks binaan Docker untuk mempercepatkan binaan dan mengurangkan saiz imej.
node_modules
.next
dist
.env*
.git
README.md
*.test.tsMembina dan Menjalankan
Bina imej dan jalankannya secara setempat.
# Build:
docker build -t my-next-app .
# Run:
docker run -p 3000:3000 -e DATABASE_URL=postgres://... my-next-app
# Check size:
docker images my-next-appDocker Compose untuk Pembangunan Setempat
Gunakan Docker Compose untuk menjalankan aplikasi bersama-sama kebergantungannya (pangkalan data, Redis) dengan satu arahan.
# docker-compose.yml
services:
web:
build: .
ports: ['3000:3000']
environment:
DATABASE_URL: postgresql://postgres:password@db:5432/myapp
depends_on: [db]
db:
image: postgres:16-alpine
environment:
POSTGRES_PASSWORD: password
POSTGRES_DB: myapp
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:Pemeriksaan Kesihatan
Tambahkan pemeriksaan kesihatan pada Fail Docker supaya alat orkestrasi mengetahui masa kontena sedia digunakan.
HEALTHCHECK --interval=30s --timeout=3s \
CMD curl -f http://localhost:3000/api/health || exit 1Pemboleh Ubah Persekitaran pada Masa Jalan
Hantar pemboleh ubah persekitaran semasa docker run atau melalui --env-file. Jangan sekali-kali masukkan rahsia ke dalam imej.
docker run -p 3000:3000 \
--env-file .env.production \
my-next-appBinaan Berbilang Platform
Bina imej untuk berbilang seni bina CPU (ARM64 untuk Mac M1 dan mesin maya awan, AMD64 untuk kebanyakan pelayan) dengan Docker Buildx.
docker buildx build \
--platform linux/amd64,linux/arm64 \
-t myregistry/my-next-app:latest \
--push .Semakan Pantas
Apakah manfaat menggunakan binaan Docker berbilang peringkat untuk aplikasi React/Next.js?
Ringkasan
Gunakan Fail Docker berbilang peringkat: Node.js untuk membina, Nginx atau node:alpine untuk menyediakan aplikasi. Tambahkan output: 'standalone' dalam konfigurasi Next.js untuk menghasilkan imej minimum. Gunakan Docker Compose untuk pembangunan setempat, hantar rahsia semasa masa jalan melalui pemboleh ubah persekitaran, dan bina imej berbilang platform dengan Buildx untuk keserasian ARM dan AMD64.
Pelajari React dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 88
- Pelajaran
- 324
Soalan Lazim
Adakah pelajaran “Mendockerkan Aplikasi React/Next.js” percuma?
Ya — teks penuh “Mendockerkan Aplikasi React/Next.js” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus React Academy, tingkat taraf kepada CoddyKit PRO. Kursus React Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Mendockerkan Aplikasi React/Next.js”?
Tulis Dockerfile berbilang peringkat untuk aplikasi Next.js dan jalankannya secara setempat dengan Docker Compose. Anda berlatih React Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan React Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran React Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.
Berapa lamakah pelajaran “Mendockerkan Aplikasi React/Next.js” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran React Academy ini?
Ya. Setiap pelajaran React Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Menerapkan ke Vercel: Tanpa Konfigurasi & URL Pratonton
- Mengehos SPA React di AWS S3 & CloudFront
- Mendockerkan Aplikasi React/Next.js
- CI/CD GitHub Actions untuk React