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"]