# ================================ # Build Stage # ================================ FROM node:20-alpine AS builder # Set working directory WORKDIR /app # Copy package files COPY package*.json ./ # Install dependencies RUN npm ci # Copy source code COPY . . # Build the application RUN npm run build # ================================ # Production Stage # ================================ FROM node:20-alpine AS production # Set working directory WORKDIR /app # Set environment to production ENV NODE_ENV=production # Create non-root user for security RUN addgroup --system --gid 1001 nodejs \ && adduser --system --uid 1001 nuxtjs # Copy package files for preview command COPY --from=builder --chown=nuxtjs:nodejs /app/package*.json ./ COPY --from=builder --chown=nuxtjs:nodejs /app/node_modules ./node_modules COPY --from=builder --chown=nuxtjs:nodejs /app/.nuxt ./.nuxt COPY --from=builder --chown=nuxtjs:nodejs /app/.output ./.output # Switch to non-root user USER nuxtjs # Expose port EXPOSE 3001 # Set default environment variables ENV HOST=0.0.0.0 ENV PORT=3001 ENV NUXT_HOST=0.0.0.0 ENV NUXT_PORT=3001 # Start the application using preview command CMD ["npm", "run", "preview"]