FROM node:26-slim AS builder WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . RUN npm run build RUN npm prune --omit=dev FROM node:26-alpine WORKDIR /app COPY --from=builder --chown=node:node /app/build build/ COPY --from=builder --chown=node:node /app/node_modules node_modules/ COPY --from=builder --chown=node:node /app/package.json ./ COPY --from=builder --chown=node:node /app/drizzle drizzle/ COPY --from=builder --chown=node:node /app/scripts scripts/ RUN mkdir -p /app/data && chown node:node /app/data VOLUME /app/data EXPOSE 3000 ENV NODE_ENV=production ENV DATABASE_URL=file:./data/data.db HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \ CMD node -e "require('http').get('http://localhost:3000/', r => {process.exit(r.statusCode === 200 ? 0 : 1)})" USER node CMD ["sh", "-c", "node scripts/migrate.js && node build"]