kontenhumas-fe/Dockerfile

48 lines
1.3 KiB
Docker
Raw Normal View History

2025-09-16 13:47:15 +00:00
# Menggunakan image Node.js yang lebih ringan
FROM node:23.5.0-alpine
# Mengatur port
ENV PORT 3000
2026-01-19 10:56:19 +00:00
# Build arguments untuk environment variables (build-time)
# Bisa di-override saat docker build dengan --build-arg
ARG NEXT_PUBLIC_API_URL
ARG NEXT_PUBLIC_SITE_URL
# Set sebagai environment variables untuk build
# Next.js membaca NEXT_PUBLIC_* variables saat BUILD TIME
ENV NEXT_PUBLIC_API_URL=${NEXT_PUBLIC_API_URL}
ENV NEXT_PUBLIC_SITE_URL=${NEXT_PUBLIC_SITE_URL}
2025-09-16 13:47:15 +00:00
# Install pnpm secara global
RUN npm install -g pnpm
# Membuat direktori aplikasi dan mengatur sebagai working directory
WORKDIR /usr/src/app
# Menyalin file penting terlebih dahulu untuk caching
COPY package.json ./
# Menyalin direktori ckeditor5 jika diperlukan
COPY vendor/ckeditor5 ./vendor/ckeditor5
# Install dependencies
RUN pnpm install
# RUN pnpm install --frozen-lockfile
2026-01-19 10:56:19 +00:00
# Menyalin source code aplikasi (termasuk .env jika ada)
# PENTING: Next.js akan membaca file .env otomatis jika ada
# Tapi jika ARG di-set, ARG akan override nilai dari .env
2025-09-16 13:47:15 +00:00
COPY . .
# Build aplikasi
2026-01-19 10:56:19 +00:00
# Next.js membaca NEXT_PUBLIC_* dari:
# 1. Environment variables (ENV) - prioritas tertinggi
# 2. File .env - jika ENV tidak di-set
2025-09-16 13:47:15 +00:00
RUN NODE_OPTIONS="--max-old-space-size=4096" pnpm next build
# Expose port untuk server
EXPOSE 3000
# Perintah untuk menjalankan aplikasi
CMD ["pnpm", "run", "start"]