# --- deps stage: install only production dependencies ---
FROM node:20-alpine AS deps
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci --omit=dev

# --- runtime stage ---
FROM node:20-alpine
WORKDIR /app
ENV NODE_ENV=production

# better-sqlite3 is a native addon; alpine needs libstdc++ at runtime for it.
RUN apk add --no-cache libstdc++

COPY --from=deps /app/node_modules ./node_modules
COPY . .

# Don't run as root in the container.
RUN addgroup -S fashionos && adduser -S fashionos -G fashionos \
  && mkdir -p /app/db && chown -R fashionos:fashionos /app
USER fashionos

EXPOSE 4000
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s \
  CMD node -e "fetch('http://localhost:4000/api/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"

CMD ["node", "server.js"]
