FROM node:22-bookworm-slim AS build
ARG RAG_VERSION
ARG BUILD_REVISION=unknown
WORKDIR /app
COPY VERSION package.json package-lock.json tsconfig.json ./
RUN test "$RAG_VERSION" = "$(tr -d '\r\n' < VERSION)" \
    && node -e 'process.exit(require("./package.json").version === require("node:fs").readFileSync("VERSION", "utf8").trim() ? 0 : 1)'
RUN npm ci
COPY src ./src
COPY migrations ./migrations
COPY public ./public
RUN npm run build

FROM node:22-bookworm-slim AS runtime
ARG RAG_VERSION
ARG BUILD_REVISION=unknown
WORKDIR /app
ENV NODE_ENV=production OCR_ARTIFACT_ROOT=/data/ingestions RAG_VERSION=${RAG_VERSION} BUILD_REVISION=${BUILD_REVISION}
LABEL org.opencontainers.image.version=${RAG_VERSION} \
      org.opencontainers.image.revision=${BUILD_REVISION}
COPY VERSION package.json package-lock.json ./
RUN test "$RAG_VERSION" = "$(tr -d '\r\n' < VERSION)" \
    && node -e 'process.exit(require("./package.json").version === require("node:fs").readFileSync("VERSION", "utf8").trim() ? 0 : 1)'
RUN npm ci --omit=dev
COPY --from=build /app/dist ./dist
COPY --from=build /app/migrations ./migrations
COPY public ./public
RUN install -d -o node -g node -m 700 /data/ingestions
VOLUME ["/data/ingestions"]
USER node
EXPOSE 3000
CMD ["sh", "-c", "node dist/modules/catalog/migrations.js && exec node dist/server.js"]
