# Use lightweight Node.js 20 base image FROM node:20-alpine@sha256:9bef0ef1e268f60627da9ba7d7605e8831d5b56ad07487d24d1aa386336d1944 as builder # Set working directory WORKDIR /app # Copy package files separately for better Docker caching COPY package.json package-lock.json ./ # Install dependencies RUN npm ci # Copy entire project COPY . . # Create a .env file before build RUN echo "NEXT_PUBLIC_HCAPTCHA_SITE_KEY=$HCAPTCHA_SITE_KEY" > .env # Build the Next.js app RUN npm run build # Use a minimal base image for running the app FROM node:20-alpine@sha256:9bef0ef1e268f60627da9ba7d7605e8831d5b56ad07487d24d1aa386336d1944 WORKDIR /app # Copy built files from the builder stage COPY --from=builder /app ./ # Expose port EXPOSE 3000 # Start Next.js in production mode CMD ["npm", "run", "start"]