FROM node:20-alpine # Install dumb-init for proper signal handling RUN apk add --no-cache dumb-init # Set working directory WORKDIR /app # Copy package files COPY package*.json ./ # Install dependencies RUN npm install --production # Copy application code COPY . . # Build the application RUN npm run build # Create data directory for SQLite (in app directory for Docker) RUN mkdir -p /app/data # Set proper permissions for the data directory RUN chown -R node:node /app/data # Switch to non-root user USER node # Expose port EXPOSE 3000 # Use dumb-init to handle signals properly ENTRYPOINT ["/usr/bin/dumb-init", "--"] # Start the application CMD ["npm", "start"]