| # Use the official Node.js image as the base image | |
| FROM node:22-alpine | |
| # Set the working directory | |
| WORKDIR /app | |
| # Install pnpm and serve | |
| RUN npm install -g pnpm serve | |
| # Install dependencies | |
| COPY package.json ./ | |
| COPY pnpm-lock.yaml ./ | |
| RUN pnpm install | |
| # Copy the rest of the application code | |
| COPY . . | |
| # Build the Vite application | |
| RUN pnpm run build | |
| # Ensure the correct ownership and permissions | |
| RUN chown -R node:node /app | |
| # Switch to the non-root 'node' user | |
| USER node | |
| # Expose the port the app runs on | |
| EXPOSE 8080 | |
| # Start the production server | |
| CMD ["serve", "-s", "dist", "-l", "8080"] | |