# Gunakan base image Node.js Alpine yang ringan FROM node:23.5.0-alpine # Atur environment ENV PORT=3000 ENV NODE_ENV=production ENV NODE_OPTIONS="--max-old-space-size=4096" # Install dependencies global RUN npm install -g pnpm pm2 # Set working directory WORKDIR /usr/src/app # Salin file penting untuk caching dependencies COPY package.json pnpm-lock.yaml* ./ COPY ecosystem.config.js ./ # Salin vendor jika diperlukan (ckeditor misalnya) COPY vendor/ckeditor5 ./vendor/ckeditor5 # Install dependencies RUN pnpm install --frozen-lockfile # Salin semua source code COPY . . # Build Next.js RUN pnpm run build # Expose port EXPOSE 3000 # Jalankan Next.js dalam mode cluster (gunakan semua core) CMD ["pm2-runtime", "ecosystem.config.js"]