FROM node:22-alpine AS deps WORKDIR /app COPY package*.json ./ COPY server/package.json server/package.json RUN npm ci --omit=dev --workspace server FROM node:22-alpine ENV NODE_ENV=production WORKDIR /app RUN apk add --no-cache curl COPY --from=deps /app/node_modules ./node_modules COPY package.json ./ COPY server/package.json server/package.json COPY server/src server/src COPY server/public server/public RUN mkdir -p /app/uploads && chown -R node:node /app USER node EXPOSE 3000 HEALTHCHECK --interval=30s --timeout=5s --retries=3 CMD curl -fsS http://localhost:3000/health || exit 1 CMD ["node", "server/src/index.js"]