0Pricing
React Academy · Pelajaran

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.ts

Membangun 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-app

Docker 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 1

Variabel 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-app

Pembuatan 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

  1. Menerapkan ke Vercel: Tanpa Konfigurasi & URL Pratinjau
  2. Meng-host SPA React di AWS S3 & CloudFront
  3. Membuat Aplikasi React/Next.js dalam Docker
  4. CI/CD GitHub Actions untuk React
← Kembali ke React Academy