build(docker): reliable apt mirror and correct build context
- The default deb.debian.org Cloudflare CDN throttled to ~150 kB/s from this network and repeatedly dropped the gcc-12/cpp-12 fetch, failing the image build twice. Switch apt to mirror.yandex.ru and add Acquire retry/timeout options so the system-dependency layer (OCRmyPDF, Tesseract rus+eng, Ghostscript, qpdf) builds reliably. - Copy pyproject.toml, README.md, alembic.ini and the app/scripts packages before "pip install -e ." so hatchling's editable build can validate the readme and packages (previously failed with "Readme file does not exist: README.md"). - Drop README.md from .dockerignore so the build context includes it. - Ignore local preview launch config (frontend/.claude, .claude/launch.json). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -13,4 +13,3 @@ tests
|
|||||||
.ruff_cache
|
.ruff_cache
|
||||||
.idea
|
.idea
|
||||||
.vscode
|
.vscode
|
||||||
README.md
|
|
||||||
|
|||||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -19,3 +19,7 @@ data/work/*
|
|||||||
!data/work/.gitkeep
|
!data/work/.gitkeep
|
||||||
*.log
|
*.log
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
|
||||||
|
# local preview launch config
|
||||||
|
frontend/.claude/
|
||||||
|
.claude/launch.json
|
||||||
|
|||||||
@@ -6,8 +6,19 @@ ENV PYTHONUNBUFFERED=1 \
|
|||||||
PIP_DISABLE_PIP_VERSION_CHECK=1 \
|
PIP_DISABLE_PIP_VERSION_CHECK=1 \
|
||||||
DEBIAN_FRONTEND=noninteractive
|
DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
# Switch apt to a faster mirror (Yandex) before installing. The default
|
||||||
|
# deb.debian.org Cloudflare CDN throttles to ~150 kB/s from some networks,
|
||||||
|
# stalling the build on gcc-12/cpp-12; Yandex serves consistently faster.
|
||||||
|
RUN sed -i 's|deb.debian.org|mirror.yandex.ru|g' /etc/apt/sources.list.d/debian.sources 2>/dev/null \
|
||||||
|
|| sed -i 's|deb.debian.org|mirror.yandex.ru|g' /etc/apt/sources.list 2>/dev/null \
|
||||||
|
|| true
|
||||||
|
|
||||||
# System deps for OCRmyPDF + Tesseract (rus+eng) + Ghostscript + qpdf + image libs
|
# System deps for OCRmyPDF + Tesseract (rus+eng) + Ghostscript + qpdf + image libs
|
||||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y --no-install-recommends \
|
||||||
|
--fix-missing -o Acquire::Retries=10 \
|
||||||
|
-o Acquire::http::Timeout=180 \
|
||||||
|
-o Acquire::https::Timeout=180 \
|
||||||
build-essential \
|
build-essential \
|
||||||
curl \
|
curl \
|
||||||
ca-certificates \
|
ca-certificates \
|
||||||
@@ -33,14 +44,15 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
|||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
COPY pyproject.toml /app/pyproject.toml
|
# Copy the metadata + package payload BEFORE pip install. hatchling validates
|
||||||
|
# README.md and the [packages] entries (app, scripts) at editable-install time;
|
||||||
RUN pip install --upgrade pip wheel setuptools && \
|
# missing files cause `Readme file does not exist` even with `pip install -e .`.
|
||||||
pip install -e .
|
COPY pyproject.toml README.md alembic.ini /app/
|
||||||
|
|
||||||
COPY app /app/app
|
COPY app /app/app
|
||||||
COPY scripts /app/scripts
|
COPY scripts /app/scripts
|
||||||
COPY alembic.ini /app/alembic.ini
|
|
||||||
|
RUN pip install --upgrade pip wheel setuptools \
|
||||||
|
&& pip install -e .
|
||||||
|
|
||||||
RUN mkdir -p /data/input /data/work
|
RUN mkdir -p /data/input /data/work
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user