Jose Salazar Claude Opus 5 commited on
Commit
843a295
·
1 Parent(s): dd5a294

Autenticar también la precarga de modelos en la build

Browse files

El RUN que hornea bge-m3 y bge-reranker-v2-m3 descargaba sin credencial. El log
de la build lo avisaba:

Warning: You are sending unauthenticated requests to the HF Hub.
Please set a HF_TOKEN to enable higher rate limits and faster downloads.

Los modelos son públicos, así que funcionaba, pero anónimo cae en el límite de
tasa del Hub — y son 6.4 GB, justo donde eso muerde. Se monta el mismo secreto
hf_token que ya usa la descarga del índice.

`required=false`: sin el secreto la build sigue funcionando (sólo más lenta).
El montaje vive únicamente durante el RUN, así que el token no queda en ninguna
capa de la imagen —a diferencia de un --build-arg.

Asignación y export separados para no enmascarar el código de salida de `cat`
(SC2155, señalado por hadolint).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

Files changed (1) hide show
  1. Dockerfile +10 -1
Dockerfile CHANGED
@@ -65,10 +65,19 @@ snapshot_download(repo_id='$HF_INDEX_REPO', repo_type='dataset', local_dir='/app
65
  # petición intentaría descargarlos de huggingface.co en caliente: lento en CPU-basic y, si la
66
  # red falla, el reranker cae en silencio a orden RRF. Con HF_HUB_OFFLINE=1 en runtime, una
67
  # descarga que faltase falla de forma ruidosa en vez de degradar sin avisar.
 
 
 
 
 
68
  ARG RAG_EMBED_MODEL=BAAI/bge-m3
69
  ARG RAG_RERANKER_MODEL=BAAI/bge-reranker-v2-m3
70
  ENV HF_HOME=/opt/hf
71
- RUN if [ "$WITH_RAG" = "1" ]; then \
 
 
 
 
72
  backend/.venv/bin/python -c "\
73
  from sentence_transformers import SentenceTransformer, CrossEncoder; \
74
  SentenceTransformer('$RAG_EMBED_MODEL'); CrossEncoder('$RAG_RERANKER_MODEL')"; \
 
65
  # petición intentaría descargarlos de huggingface.co en caliente: lento en CPU-basic y, si la
66
  # red falla, el reranker cae en silencio a orden RRF. Con HF_HUB_OFFLINE=1 en runtime, una
67
  # descarga que faltase falla de forma ruidosa en vez de degradar sin avisar.
68
+ #
69
+ # Se monta el mismo secreto que en la descarga del índice: los dos modelos son públicos y la
70
+ # descarga funciona sin credencial, pero anónima cae en el límite de tasa del Hub — y son 6.4 GB,
71
+ # justo el caso donde eso muerde. `required=false` mantiene la build funcionando sin el secreto.
72
+ # El montaje sólo existe durante este RUN: el token no queda en ninguna capa de la imagen.
73
  ARG RAG_EMBED_MODEL=BAAI/bge-m3
74
  ARG RAG_RERANKER_MODEL=BAAI/bge-reranker-v2-m3
75
  ENV HF_HOME=/opt/hf
76
+ RUN --mount=type=secret,id=hf_token,required=false \
77
+ if [ "$WITH_RAG" = "1" ]; then \
78
+ if [ -f /run/secrets/hf_token ]; then \
79
+ HF_TOKEN="$(cat /run/secrets/hf_token)"; export HF_TOKEN; \
80
+ fi; \
81
  backend/.venv/bin/python -c "\
82
  from sentence_transformers import SentenceTransformer, CrossEncoder; \
83
  SentenceTransformer('$RAG_EMBED_MODEL'); CrossEncoder('$RAG_RERANKER_MODEL')"; \