# syntax=docker/dockerfile:1 # Use the official Node.js image as the base image ARG NODE_VERSION=22.13.1 FROM node:${NODE_VERSION}-slim AS base # Set the working directory WORKDIR /app # Copy package.json and package-lock.json for dependency installation COPY --link package.json package-lock.json ./ # Install dependencies using npm ci for deterministic builds RUN --mount=type=cache,target=/root/.npm npm ci --production # Copy the application source code COPY --link . . # Set environment variables for production ENV NODE_ENV=production ENV NODE_OPTIONS="--max-old-space-size=4096" # Create a non-root user and switch to it RUN useradd -m appuser USER appuser # Expose the application port EXPOSE 8080 # Define the command to run the application CMD ["node", "server.js"]