# Dockerfile for web-antrean Nuxt.js Application # Multi-stage build for optimized image size and native modules support # Stage 1: Build Stage FROM node:20-alpine AS builder # Install build dependencies for compiling native addons (like better-sqlite3) RUN apk add --no-cache python3 make g++ gcc libc-dev # Set working directory WORKDIR /app # Copy package files COPY package*.json ./ # Install dependencies (including devDependencies for build) RUN npm ci # Copy application files COPY . . # Build the application for production RUN npm run build # Stage 2: Production Stage FROM node:20-alpine AS runner # Install runtime dependencies (like libc6-compat for compatibility with precompiled binaries) RUN apk add --no-cache libc6-compat # Set working directory WORKDIR /app # Copy package files COPY package*.json ./ # Copy built output and compiled node_modules from builder stage # This avoids needing to install build tools (g++, make, python) in this slim production stage COPY --from=builder /app/.output /app/.output COPY --from=builder /app/node_modules /app/node_modules # Expose port EXPOSE 3000 # Set environment variables ENV NODE_ENV=production ENV HOST=0.0.0.0 ENV PORT=3000 # Start the application CMD ["node", ".output/server/index.mjs"]