FROM node:18-alpine # Build arguments - Coolify provides SOURCE_COMMIT automatically ARG SOURCE_COMMIT=unknown ARG APP_VERSION=1.0.0 WORKDIR /app # Install curl for healthcheck and git for version control operations RUN apk add --no-cache curl git # 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 . . # Set environment variables for runtime # Extract first 7 characters of SOURCE_COMMIT for short hash ENV GIT_COMMIT=${SOURCE_COMMIT:0:7} \ APP_VERSION=${APP_VERSION} 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"]