# This is the final, recommended configuration. # It builds a single, self-contained image with all dependencies. services: pdf2zh: build: context: . # All the setup steps are now part of a one-time build process. dockerfile_inline: | FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim WORKDIR /app # 1. Install system-level dependencies FIRST. # This is what solves the "libGL.so.1 not found" error. RUN apt-get update && \ apt-get install --no-install-recommends -y libgl1 libglib2.0-0 libxext6 libsm6 libxrender1 && \ rm -rf /var/lib/apt/lists/* # 2. Copy only the dependency file and install Python packages. # This layer is cached and only re-runs if pyproject.toml changes. COPY pyproject.toml . RUN uv pip install --system --no-cache -r pyproject.toml # 3. Copy the rest of your application code. COPY . . # 4. Install the local package and perform final updates/warmups. RUN uv pip install --system --no-cache . && \ uv pip install --system --no-cache -U "babeldoc<0.3.0" "pymupdf<1.25.3" "pdfminer-six==20250416" && \ babeldoc --warmup # The rest of the configuration is for RUNNING the built image. ports: - "7860:7860" environment: - PYTHONUNBUFFERED=1 # The UV_LINK_MODE warning happens during build, so we can set it there if needed, # but it's generally harmless. command: ["pdf2zh", "-i"] # Optional: Mount a volume for persistent data I/O if needed # volumes: # - ./data:/app/data stdin_open: true tty: true