chore: update dockerfile (#2234)

* chore(docker): fix entrypoint

(cherry picked from commit 9db9cb60b7)

* chore(docker): fix downloads

(cherry picked from commit 6777a9dca8c43033af9e158b53ea87eb9e4b1e31)

* chore(docker): fix missing nltk package

(cherry picked from commit acdabb957be98295d6d133100e781e2bcb4fbcb0)

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
Javier Martinez
2026-06-02 19:52:20 +02:00
committed by GitHub
parent d3954dbb6f
commit 0475e69e5e

View File

@@ -122,12 +122,16 @@ ARG PGPT_DOWNLOAD_PLAYWRIGHT
COPY pyproject.toml uv.lock ./
RUN mkdir -p models/nltk_cache .local-browsers tiktoken_cache encodings
ENV HF_HOME=local_data
ENV PLAYWRIGHT_BROWSERS_PATH=/home/worker/app/.local-browsers
ENV TIKTOKEN_CACHE_DIR=/home/worker/app/tiktoken_cache
ENV TIKTOKEN_ENCODINGS_BASE=/home/worker/app/encodings
ENV TIKTOKEN_RS_CACHE_DIR=/home/worker/app/encodings
RUN mkdir -p models/nltk_cache .local-browsers tiktoken_cache encodings local_data
RUN --mount=type=cache,target=/root/.cache/uv \
set -eu; \
export PLAYWRIGHT_BROWSERS_PATH=/home/worker/app/.local-browsers; \
export TIKTOKEN_CACHE_DIR=/home/worker/app/tiktoken_cache; \
has_web_scraping=0; \
for extra in $EXTRAS; do \
if [ "$extra" = "tools" ] || [ "$extra" = "tool-web-scraping" ] || [ "$extra" = "core" ]; then \
@@ -155,13 +159,16 @@ RUN --mount=type=cache,target=/root/.cache/uv \
uv pip install --system $locked_packages; \
fi; \
if [ "$resolved_download_nltk" = "1" ]; then \
python3 -c "import nltk; nltk.download('punkt_tab', download_dir='models/nltk_cache'); nltk.download('stopwords', download_dir='models/nltk_cache')"; \
python3 -c "import nltk, zipfile; from pathlib import Path; download_dir=Path('models/nltk_cache'); packages=('punkt_tab', 'punkt', 'averaged_perceptron_tagger_eng', 'averaged_perceptron_tagger', 'stopwords', 'wordnet'); [nltk.download(p, download_dir=str(download_dir), raise_on_error=True) for p in packages]; [(lambda path: (lambda zf: (zf.extractall(path.parent), zf.close()))(zipfile.ZipFile(path)))(path) for path in download_dir.rglob('*.zip')]"; \
fi; \
if [ "$resolved_download_tiktoken_cache" = "1" ]; then \
python3 -c "import tiktoken; tiktoken.get_encoding('cl100k_base')"; \
fi; \
if [ "$resolved_download_tiktoken_encodings" = "1" ]; then \
python3 -c "import urllib.request; from pathlib import Path; d = Path('encodings'); d.mkdir(exist_ok=True); [urllib.request.urlretrieve(f'https://openaipublic.blob.core.windows.net/encodings/{name}', d / name) for name in ('o200k_base.tiktoken', 'cl100k_base.tiktoken')]"; \
fi; \
if [ "$resolved_download_playwright" = "1" ]; then \
playwright install chromium --with-deps; \
playwright install chromium; \
fi
FROM os-deps AS final
@@ -196,6 +203,8 @@ RUN chmod +x scripts/worker_entrypoint
COPY --chown=worker version.txt version.txt
COPY --chown=worker settings.yaml settings.yaml
RUN --mount=type=cache,target=/root/.cache/uv uv pip install --python /home/worker/app/.venv/bin/python --no-deps .
ENV PATH="/home/worker/app/.venv/bin:/usr/local/bin:${PATH}"
ENV HF_HOME=local_data
ENV PYTHONPATH="$PYTHONPATH:/private_gpt/"