Spaces:
Sleeping
Arreglar .dockerignore: la imagen no llegaba a construirse
Browse filesDos fallos, ambos preexistentes y ambos fatales para el despliegue nuevo.
1) El venv de macOS sobrescribía el de Linux.
`RUN uv sync` construye /app/backend/.venv (Linux) y el `COPY backend/ backend/`
posterior lo pisaba con el .venv local (binarios Mach-O, 1.3 GB), dejando un
python inejecutable en el contenedor. La build habría reventado al precargar
los modelos y, de haber arrancado, el CMD de uvicorn habría fallado igual.
2) backend/.env se horneaba en la imagen.
.dockerignore usa la semántica de filepath.Match de Go, donde `*` NO cruza el
separador de ruta: `.env` y `*.env` excluían el de la raíz pero no
backend/.env, que contiene HF_API_KEY. Se añaden los patrones `**/`.
De paso se excluyen books/ (226 MB con licencia), node_modules anidados,
cachés de Python y los directorios que la imagen no usa.
Contexto de build: de 40.128 archivos a 221 (77 MB, casi todo el índice RAG).
Nota: sigue sin poder construirse aquí para verificarlo (4,1 GB de disco libre
frente a los ~25-30 GB que pide la imagen). Validado con hadolint y simulando
el contexto con la semántica de Go.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- .dockerignore +34 -2
|
@@ -1,6 +1,11 @@
|
|
| 1 |
-
#
|
|
|
|
|
|
|
|
|
|
| 2 |
.env
|
| 3 |
*.env
|
|
|
|
|
|
|
| 4 |
|
| 5 |
# SQLite database (will be created at runtime). NUNCA hornear la BD de usuarios en la
|
| 6 |
# imagen: sólo el índice RAG (instance/rag_index) debe copiarse. Excluye la BD del contexto
|
|
@@ -23,8 +28,35 @@ Thumbs.db
|
|
| 23 |
.git/
|
| 24 |
.gitignore
|
| 25 |
|
| 26 |
-
# Node / build tools
|
|
|
|
|
|
|
| 27 |
node_modules/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 28 |
|
| 29 |
# Documentation not needed in the image
|
| 30 |
README.md
|
|
|
|
| 1 |
+
# Secretos. Los patrones `**/` son IMPRESCINDIBLES, no redundantes: .dockerignore usa la
|
| 2 |
+
# semántica de filepath.Match de Go, donde `*` NO cruza el separador de ruta. Con sólo `.env` y
|
| 3 |
+
# `*.env` se excluía el .env de la raíz pero NO backend/.env, que contiene HF_API_KEY y acabaría
|
| 4 |
+
# horneado en la imagen vía `COPY backend/ backend/`.
|
| 5 |
.env
|
| 6 |
*.env
|
| 7 |
+
**/.env
|
| 8 |
+
**/*.env
|
| 9 |
|
| 10 |
# SQLite database (will be created at runtime). NUNCA hornear la BD de usuarios en la
|
| 11 |
# imagen: sólo el índice RAG (instance/rag_index) debe copiarse. Excluye la BD del contexto
|
|
|
|
| 28 |
.git/
|
| 29 |
.gitignore
|
| 30 |
|
| 31 |
+
# Node / build tools. Hace falta el patrón `**/` además del suelto: los patrones de
|
| 32 |
+
# .dockerignore se casan contra la ruta relativa a la raíz del contexto, así que `node_modules/`
|
| 33 |
+
# por sí solo NO cubre frontend/node_modules (96 MB), que la etapa 1 reinstala con `npm ci`.
|
| 34 |
node_modules/
|
| 35 |
+
**/node_modules/
|
| 36 |
+
|
| 37 |
+
# CRÍTICO — entornos virtuales de Python.
|
| 38 |
+
# `RUN uv sync` construye el venv de Linux en /app/backend/.venv, y el `COPY backend/ backend/`
|
| 39 |
+
# posterior lo SOBRESCRIBÍA con el venv local de macOS (binarios Mach-O, 1.3 GB). El resultado
|
| 40 |
+
# era un /app/backend/.venv/bin/python inejecutable en Linux: la build reventaba al precargar
|
| 41 |
+
# los modelos y, de haber llegado a arrancar, el CMD de uvicorn habría fallado igual.
|
| 42 |
+
.venv/
|
| 43 |
+
**/.venv/
|
| 44 |
+
__pycache__/
|
| 45 |
+
**/__pycache__/
|
| 46 |
+
*.pyc
|
| 47 |
+
.pytest_cache/
|
| 48 |
+
.ruff_cache/
|
| 49 |
+
|
| 50 |
+
# Corpus con licencia: 226 MB que no se copian a ninguna capa, sólo engordan el contexto.
|
| 51 |
+
books/
|
| 52 |
+
|
| 53 |
+
# Artefactos y código que la imagen no usa. dist/ se toma de la etapa `frontend`, no del host.
|
| 54 |
+
dist/
|
| 55 |
+
evals/
|
| 56 |
+
bridge/
|
| 57 |
+
.github/
|
| 58 |
+
.agents/
|
| 59 |
+
scripts/
|
| 60 |
|
| 61 |
# Documentation not needed in the image
|
| 62 |
README.md
|