Jose Salazar Claude Opus 5 commited on
Commit
a2a4438
·
1 Parent(s): 5af9605

Arreglar .dockerignore: la imagen no llegaba a construirse

Browse files

Dos 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>

Files changed (1) hide show
  1. .dockerignore +34 -2
.dockerignore CHANGED
@@ -1,6 +1,11 @@
1
- # Sensitive files
 
 
 
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 (none used, but just in case)
 
 
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