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