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 COPY src/ ./src/ # Create data directory for SQLite RUN mkdir -p /app/data EXPOSE 8000 USER node ENTRYPOINT ["dumb-init", "--"] CMD ["node", "src/index.js"]