chwellofficial/nt360Slides
0
1# syntax=docker/dockerfile:1.42FROM python:3.11-slim-trixie3 4WORKDIR /app5 6# LiteParse (Node + @llamaindex/liteparse) for document extraction; OCR via Tesseract.7ENV APP_DATA_DIRECTORY=/app_data \8 TEMP_DIRECTORY=/tmp/presenton \9 PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium \10 UV_SYSTEM_PYTHON=1 \11 UV_COMPILE_BYTECODE=1 \12 UV_LINK_MODE=copy \13 PATH="/root/.local/bin:${PATH}" \14 EXPORT_PACKAGE_ROOT=/app/presentation-export \15 EXPORT_RUNTIME_DIR=/app/presentation-export \16 BUILT_PYTHON_MODULE_PATH=/app/presentation-export/py/convert-linux-x64 \17 PRESENTON_APP_ROOT=/app18 19RUN apt-get update && apt-get install -y --no-install-recommends \20 ca-certificates curl unzip \21 nginx libreoffice fontconfig chromium imagemagick zstd \22 tesseract-ocr tesseract-ocr-eng \23 && curl -LsSf https://astral.sh/uv/install.sh | sh \24 && rm -rf /var/lib/apt/lists/*25 26RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \27 && apt-get install -y nodejs \28 && rm -rf /var/lib/apt/lists/*29 30COPY package.json package-lock.json /app/31RUN npm --prefix /app install --omit=dev32 33RUN mkdir -p /app/document-extraction-liteparse \34 && npm --prefix /app/document-extraction-liteparse init -y \35 && npm --prefix /app/document-extraction-liteparse install @llamaindex/liteparse@1.4.0 --omit=dev36COPY electron/resources/document-extraction/liteparse_runner.mjs /app/document-extraction-liteparse/liteparse_runner.mjs37 38COPY scripts/sync-presentation-export.cjs /app/scripts/sync-presentation-export.cjs39RUN node /app/scripts/sync-presentation-export.cjs --force \40 && chmod +x /app/presentation-export/py/convert-linux-x6441 42# Bind mount `.:/app` hides any .venv under servers/fastapi at runtime — install deps into43# system site-packages (same interpreter `start.js` uses as `python`).44COPY servers/fastapi /app/servers/fastapi45WORKDIR /app/servers/fastapi46RUN --mount=type=cache,target=/root/.cache/uv \47 uv export --frozen --no-dev --no-emit-project -o /tmp/requirements.txt \48 && uv pip install --system -r /tmp/requirements.txt \49 && uv pip install --system --no-deps .50 51WORKDIR /app52COPY nginx.conf /etc/nginx/nginx.conf53 54EXPOSE 8055CMD ["node", "/app/start.js", "--dev"]56 