42 lines
1.5 KiB
Docker
42 lines
1.5 KiB
Docker
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"]
|