Kembali ke Blog
devops 5 Juli 2026 oleh Tim Seruni Technology

Deploy Aplikasi Statis dengan Docker Compose & Nginx

Pola multi-stage build untuk membangun situs statis dan menyajikannya lewat Nginx Alpine—ringan, cepat, dan mudah dirawat di server sendiri.

docker nginx ci-cd deployment

Menyajikan situs statis tidak perlu server yang berat. Dengan multi-stage build, kita bisa mengompilasi aplikasi di satu stage, lalu menyalin hasilnya ke image Nginx Alpine yang mungil. Berikut pola yang kami pakai untuk situs ini sendiri.

Multi-Stage Dockerfile

Stage pertama membangun aset, stage kedua hanya menyajikan folder dist:

FROM node:20-alpine AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

FROM nginx:1.27-alpine AS runtime
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY --from=build /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

Image akhir tidak membawa Node.js maupun node_modules—hanya Nginx dan file statis.

Stage build (Node) terpisah dari stage runtime (Nginx), menghasilkan image yang ramping.

Menjalankan dengan Docker Compose

services:
  web:
    build: .
    container_name: serunitech-web
    restart: unless-stopped
    ports:
      - "80:80"

Jalankan dengan satu perintah:

docker compose up -d --build

Cek log dan status container:

docker compose ps
docker compose logs -f web

Tips: Set restart: unless-stopped agar container otomatis hidup kembali setelah server reboot, tetapi tetap menghormati stop manual Anda.

Penutup

Pola ini ideal untuk company profile, dokumentasi, atau blog statis. Untuk kebutuhan yang lebih kompleks—reverse proxy multi-service, SSL otomatis, atau pipeline CI/CD—tim kami siap membantu.