FROM node:20-alpine AS base
RUN apk add --no-cache dumb-init
WORKDIR /home/node/app
RUN chown -R node:node /home/node/app

FROM base AS deps
COPY --chown=node:node package*.json ./
RUN npm ci --only=production && npm cache clean --force

FROM base AS production
COPY --from=deps --chown=node:node /home/node/app/node_modules ./node_modules
COPY --chown=node:node . .
RUN mkdir -p logs uploads && chown -R node:node logs uploads
USER node
EXPOSE 5000
HEALTHCHECK --interval=30s --timeout=10s --start-period=30s --retries=3 \
  CMD wget -q --spider http://localhost:5000/api/v1/health || exit 1
ENTRYPOINT ["dumb-init", "--"]
CMD ["node", "src/server.js"]
