FROM node:18-alpine WORKDIR /app # Install curl for healthcheck RUN apk add --no-cache curl # Copy package files first for layer caching COPY package*.json ./ RUN npm install --production # Copy app code (changes more often — below the cached layer) COPY . . EXPOSE 3000 HEALTHCHECK --interval=10s --timeout=3s --start-period=5s --retries=2 \ CMD curl -f http://localhost:3000/health || exit 1 CMD ["node", "server.js"]