FROM node:20-alpine # Set working directory WORKDIR /app # Copy package files COPY package*.json ./ # Build-time flag to include dev dependencies for local images ARG NODE_ENV=production ENV NODE_ENV=${NODE_ENV} # Install dependencies (omit dev deps for production images) RUN if [ "$NODE_ENV" = "development" ]; then \ npm ci --include=dev --silent; \ else \ npm ci --omit=dev --silent; \ fi && \ npm cache clean --force # Copy source code COPY . . # Expose port EXPOSE 5000 # Health check HEALTHCHECK --interval=30s --timeout=10s --start-period=30s --retries=3 \ CMD node healthcheck.js # Start the application CMD ["npm", "start"]