FROM node:18-slim AS base WORKDIR /app # Install dumb-init for proper signal handling RUN apt-get update && \ apt-get install -y --no-install-recommends dumb-init && \ rm -rf /var/lib/apt/lists/* # Copy dependency manifests first (layer cache) COPY package.json package-lock.json* ./ RUN npm ci --omit=dev && npm cache clean --force # Copy application code and entrypoint COPY src/ ./src/ COPY docker-entrypoint.sh /usr/local/bin/ RUN chmod +x /usr/local/bin/docker-entrypoint.sh RUN mkdir -p /app/data EXPOSE 8000 ENTRYPOINT ["dumb-init", "--"] CMD ["docker-entrypoint.sh"]