Membuat Aplikasi React/Next.js dalam Docker
Tulis Dockerfile multiahap untuk aplikasi Next.js dan jalankan secara lokal dengan Docker Compose.
Membuat Aplikasi React/Next.js dalam Docker adalah pelajaran React Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar React Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus React Academy mencakup 4 pelajaran total.
Mengapa Docker?
Kontainer Docker mengemas aplikasi dan dependensinya bersama-sama, sehingga perilakunya konsisten di seluruh lingkungan pengembangan, praproduksi, dan produksi. Citra yang sama dapat dijalankan di mana saja.
Dockerfile untuk SPA React Sederhana
Pembuatan dua tahap: Node.js untuk membangun, Nginx untuk menyajikan keluaran statis.
# 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 Perutean SPA
Konfigurasikan Nginx untuk menyajikan index.html bagi semua rute (dukungan perutean sisi 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";
}
}Dockerfile Mode Mandiri Next.js
Next.js 12+ mendukung output: 'standalone', yang hanya menyalin berkas yang diperlukan untuk citra produksi minimal.
// 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 berkas yang tidak diperlukan dari konteks pembuatan Docker untuk mempercepat pembuatan dan mengurangi ukuran citra.
node_modules
.next
dist
.env*
.git
README.md
*.test.tsMembangun dan Menjalankan
Bangun citra dan jalankan secara lokal.
# 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 Pengembangan Lokal
Gunakan Docker Compose untuk menjalankan aplikasi bersama dependensinya (basis data, Redis) dengan satu perintah.
# 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 Kesehatan
Tambahkan pemeriksaan kesehatan ke Dockerfile agar orkestrator mengetahui kapan kontainer siap.
HEALTHCHECK --interval=30s --timeout=3s \
CMD curl -f http://localhost:3000/api/health || exit 1Variabel Lingkungan saat Berjalan
Teruskan variabel lingkungan saat menjalankan docker run atau melalui --env-file. Jangan pernah menyimpan rahasia ke dalam citra.
docker run -p 3000:3000 \
--env-file .env.production \
my-next-appPembuatan Lintas Platform
Bangun citra untuk beberapa arsitektur CPU (ARM64 untuk Mac M1 dan mesin virtual cloud, AMD64 untuk sebagian besar server) dengan Docker Buildx.
docker buildx build \
--platform linux/amd64,linux/arm64 \
-t myregistry/my-next-app:latest \
--push .Cek Cepat
Apa manfaat menggunakan pembuatan Docker multi-tahap untuk aplikasi React/Next.js?
Ringkasan
Gunakan Dockerfile multi-tahap: Node.js untuk membangun, Nginx atau node:alpine untuk menyajikan. Tambahkan output: 'standalone' dalam konfigurasi Next.js untuk menghasilkan citra minimal. Gunakan Docker Compose untuk pengembangan lokal, teruskan rahasia saat berjalan melalui variabel lingkungan, dan bangun citra lintas platform dengan Buildx agar kompatibel dengan ARM dan AMD64.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Membuat Aplikasi React/Next.js dalam Docker” gratis?
Ya — teks lengkap “Membuat Aplikasi React/Next.js dalam Docker” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus React Academy, upgrade ke CoddyKit PRO. Kursus React Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Membuat Aplikasi React/Next.js dalam Docker”?
Tulis Dockerfile multiahap untuk aplikasi Next.js dan jalankan secara lokal dengan Docker Compose. Kamu berlatih React Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai React Academy?
Tidak diperlukan pengalaman sebelumnya. React Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Membuat Aplikasi React/Next.js dalam Docker” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran React Academy ini?
Ya. Setiap pelajaran React Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Menerapkan ke Vercel: Tanpa Konfigurasi & URL Pratinjau
- Meng-host SPA React di AWS S3 & CloudFront
- Membuat Aplikasi React/Next.js dalam Docker
- CI/CD GitHub Actions untuk React