32 lines
770 B
Docker
32 lines
770 B
Docker
# --- Giai đoạn 1: Build ---
|
|
FROM node:25-alpine AS builder
|
|
|
|
# Cài đặt pnpm
|
|
RUN npm install -g pnpm
|
|
|
|
WORKDIR /app
|
|
|
|
# Copy file định nghĩa package
|
|
COPY package.json pnpm-lock.yaml ./
|
|
|
|
# Cài đặt dependencies (sử dụng --frozen-lockfile để đảm bảo đúng phiên bản)
|
|
RUN pnpm install --prod --frozen-lockfile
|
|
|
|
# Copy toàn bộ code
|
|
COPY . .
|
|
|
|
# Build Next.js (Yêu cầu next.config.js có output: 'export')
|
|
RUN pnpm run build
|
|
|
|
# --- Giai đoạn 2: Run (Sản phẩm cuối) ---
|
|
FROM nginx:alpine
|
|
|
|
# Xóa file mặc định của nginx (tùy chọn nhưng nên làm)
|
|
RUN rm -rf /usr/share/nginx/html/*
|
|
|
|
# Copy folder out từ giai đoạn builder
|
|
COPY --from=builder /app/out /usr/share/nginx/html
|
|
|
|
EXPOSE 80
|
|
|
|
CMD ["nginx", "-g", "daemon off;"] |