# syntax=docker/dockerfile:1

FROM node:20-bookworm-slim AS deps
WORKDIR /app
RUN apt-get update && apt-get install -y --no-install-recommends python3 make g++ \
  && rm -rf /var/lib/apt/lists/*
COPY package.json package-lock.json ./
RUN npm ci --omit=dev

FROM node:20-bookworm-slim AS runner
WORKDIR /app
ENV NODE_ENV=production
ENV HOST=0.0.0.0
ENV PORT=3000
ENV DB_PATH=/data/vita-formation.db

RUN apt-get update && apt-get install -y --no-install-recommends tini \
  && rm -rf /var/lib/apt/lists/* \
  && groupadd -r vita && useradd -r -g vita -d /app -s /sbin/nologin vita \
  && mkdir -p /data && chown -R vita:vita /data /app

COPY --from=deps /app/node_modules ./node_modules
COPY package.json package-lock.json ./
COPY server.js ./
COPY server ./server
COPY public ./public
COPY scripts ./scripts

USER vita
EXPOSE 3000
VOLUME ["/data"]
ENTRYPOINT ["tini", "--"]
CMD ["node", "server.js"]
