FROM node:12-alpine
WORKDIR /app
COPY . .
RUN rm -rf package-lock.json \
&& rm -rf node_modules
RUN npm install \
&& npm install -g less@3.13.1 \
&& npm install -g pm2@5.4.2 \
&& npm run build

CMD ["pm2-runtime", "ecosystem.config.js", "--env", "production"]

# -------------------------
# 1) Build stage
# -------------------------
# FROM node:12-alpine AS builder
# WORKDIR /app
# COPY package*.json ./
# # COPY package-lock.json* ./
# RUN npm install
# COPY . .
# RUN npm run build && rm -rf .next/cache

# # -------------------------
# # 2) Runtime stage
# # -------------------------
# FROM node:12-alpine AS runtime
# WORKDIR /app
# ENV NODE_ENV=production
# RUN npm install -g pm2@5.4.2
# COPY package*.json ./
# # COPY package-lock.json* ./

# RUN if [ -f package-lock.json ]; then \
# echo "Using npm ci"; \
# npm ci --omit=dev; \
# else \
# echo "package-lock.json not found, fallback to npm install"; \
# npm install --only=production; \
# fi && \
# npm cache clean --force

# # Cài dependency cho production
# # RUN npm install --only=production && npm cache clean --force
# # Copy output build + file cần chạy
# # (hãy chỉnh lại theo project của bạn: dist/build, ecosystem, config, public, ...)

# COPY --from=builder /app/server.js ./server.js
# COPY --from=builder /app/i18n.js ./i18n.js
# COPY --from=builder /app/.next ./.next
# COPY --from=builder /app/public ./public
# COPY --from=builder /app/next.config.js ./next.config.js
# COPY --from=builder /app/ecosystem.config.js ./ecosystem.config.js

# # Nếu app cần thêm các file runtime (views/public/config…), copy thêm:
# # COPY --from=builder /app/public ./public
# # COPY --from=builder /app/config ./config
# CMD ["pm2-runtime", "ecosystem.config.js", "--env", "production"]
