# Bağlam: repo kökü  (docker build -f web/Dockerfile .)
FROM node:20-bookworm-slim AS build
RUN apt-get update && apt-get install -y --no-install-recommends openssl ca-certificates && rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY web/package.json web/package-lock.json ./web/
RUN cd web && npm ci
COPY shared ./shared
COPY web ./web
ENV NEXT_TELEMETRY_DISABLED=1
RUN cd web && npx prisma generate && npx next build

FROM node:20-bookworm-slim AS run
RUN apt-get update && apt-get install -y --no-install-recommends openssl ca-certificates curl tini && rm -rf /var/lib/apt/lists/* \
 && npm i -g prisma@6.19.3 && useradd -m -u 1001 app && mkdir -p /data/storage && chown -R app /data
WORKDIR /app
ENV NODE_ENV=production NEXT_TELEMETRY_DISABLED=1 PORT=3000 HOSTNAME=0.0.0.0 STORAGE_DIR=/data/storage
COPY --from=build --chown=app /app/web/.next/standalone ./
COPY --from=build --chown=app /app/web/.next/static ./web/.next/static
COPY --from=build --chown=app /app/web/public ./web/public
COPY --from=build --chown=app /app/web/prisma ./web/prisma
COPY --chown=app web/docker-entrypoint.sh ./docker-entrypoint.sh
USER app
EXPOSE 3000
HEALTHCHECK --interval=30s --timeout=5s --start-period=40s --retries=3 CMD curl -fsS http://127.0.0.1:3000/api/health || exit 1
ENTRYPOINT ["/usr/bin/tini", "--"]
CMD ["sh", "./docker-entrypoint.sh"]
