# Menggunakan image Node.js yang lebih ringan FROM node:23.5.0-alpine # Mengatur port ENV PORT 3000 # 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 # Menyalin source code aplikasi COPY . . # Build aplikasi RUN NODE_OPTIONS="--max-old-space-size=4096" pnpm run build # Expose port untuk server EXPOSE 3000 # Perintah untuk menjalankan aplikasi CMD ["pnpm", "run", "start"] # # 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* ./ # # Salin vendor jika diperlukan (ckeditor misalnya) # COPY vendor/ckeditor5 ./vendor/ckeditor5 # # Install dependencies # RUN pnpm install --frozen-lockfile # # Salin semua source code # COPY . . # # Salin ecosystem config # COPY ecosystem.config.js ./ # # Build Next.js # RUN pnpm run build # # Expose port # EXPOSE 3000 # # Jalankan Next.js dalam mode cluster # CMD ["pm2-runtime", "start", "ecosystem.config.js"]