FROM node:22-bookworm-slim AS node FROM eclipse-temurin:21-jre-jammy AS java FROM python:3.12-slim-bookworm COPY --from=node /usr/local /usr/local ENV JAVA_HOME=/opt/java/openjdk \ PATH=/opt/java/openjdk/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin \ NODE_PATH=/opt/agent-runtime/node_modules \ PLAYWRIGHT_BROWSERS_PATH=/opt/agent-runtime/ms-playwright \ PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 WORKDIR /opt/agent-runtime COPY package.json package-lock.json ./ RUN npm ci --omit=dev \ && pip install --no-cache-dir \ defusedxml lxml "markitdown[pptx]" openpyxl pandas xlrd python-pptx pillow six \ pypdf pdfplumber reportlab pdf2image pytesseract pypdfium2 COPY --from=java /opt/java/openjdk /opt/java/openjdk RUN ln -s /opt/java/openjdk/bin/java /usr/local/bin/java \ && apt-get update \ && apt-get install -y --no-install-recommends \ adduser ca-certificates file findutils fonts-noto-cjk gawk git grep \ libreoffice-calc libreoffice-impress libreoffice-writer \ pandoc poppler-utils qpdf ripgrep sed tesseract-ocr tesseract-ocr-chi-sim unzip zip \ && npx playwright install --with-deps chromium \ && /usr/sbin/adduser --disabled-password --gecos "" --uid 10001 agent \ && mkdir -p /workspace \ && chown agent:agent /workspace \ && rm -rf /var/lib/apt/lists/* COPY fonts-local.conf /etc/fonts/local.conf RUN fc-cache -f COPY --chown=agent:agent document_view.py ./ USER agent WORKDIR /workspace CMD ["sleep", "infinity"]