Add Dockerized local project workflow

This commit is contained in:
devRaGonSa
2026-03-23 16:39:18 +01:00
parent e0db2c9bfb
commit 6fcbfd9796
12 changed files with 483 additions and 16 deletions

View File

@@ -77,6 +77,60 @@ Variables opcionales:
- `HLL_HISTORICAL_WEEKLY_FALLBACK_MIN_MATCHES`
- `HLL_HISTORICAL_WEEKLY_FALLBACK_MAX_WEEKDAY`
Variables especialmente relevantes para Docker y Compose:
- `HLL_BACKEND_HOST`
- `HLL_BACKEND_PORT`
- `HLL_BACKEND_STORAGE_PATH`
- `HLL_BACKEND_ALLOWED_ORIGINS`
- `HLL_HISTORICAL_CRCON_PAGE_SIZE`
- `HLL_HISTORICAL_CRCON_TIMEOUT_SECONDS`
- `HLL_HISTORICAL_CRCON_DETAIL_WORKERS`
- `HLL_HISTORICAL_CRCON_REQUEST_RETRIES`
- `HLL_HISTORICAL_CRCON_RETRY_DELAY_SECONDS`
- `HLL_HISTORICAL_SNAPSHOT_REFRESH_INTERVAL_SECONDS`
- `HLL_HISTORICAL_FULL_SNAPSHOT_EVERY_RUNS`
- `HLL_HISTORICAL_REFRESH_MAX_RETRIES`
- `HLL_HISTORICAL_REFRESH_RETRY_DELAY_SECONDS`
Para ejecucion containerizada, el repositorio incluye tambien:
- `backend/Dockerfile`
- `backend/.dockerignore`
- `backend/.env.example`
El contenedor usa el mismo entrypoint real del proyecto:
```powershell
python -m app.main
```
Dentro del contenedor arranca por defecto con:
- `HLL_BACKEND_HOST=0.0.0.0`
- `HLL_BACKEND_PORT=8000`
- `HLL_BACKEND_STORAGE_PATH=/app/data/hll_vietnam_dev.sqlite3`
Build local:
```powershell
docker build -t hll-vietnam-backend ./backend
```
Ejecucion local con persistencia bind-mounted:
```powershell
docker run --rm `
-p 8000:8000 `
--env-file backend/.env.example `
-v ${PWD}\backend\data:/app/data `
hll-vietnam-backend
```
Si se prefiere no usar `--env-file`, el contenedor puede arrancar solo con sus
defaults para host, puerto y path de SQLite. El bind mount de `/app/data` sigue
siendo la forma recomendada de no perder persistencia al recrear el contenedor.
El `frontend/index.html` viene preparado para volver a consultar el bloque de
servidores cada `120000` ms (`120s`) sin recargar la pagina completa. La landing
lee ese valor desde `data-server-refresh-ms`, por lo que puede ajustarse en el
@@ -210,6 +264,12 @@ Por defecto el archivo se crea en:
backend/data/hll_vietnam_dev.sqlite3
```
En Docker, ese mismo rol de persistencia debe montarse fuera del contenedor en:
```text
/app/data/hll_vietnam_dev.sqlite3
```
Variable opcional:
- `HLL_BACKEND_STORAGE_PATH`
@@ -237,6 +297,12 @@ Por defecto se escriben bajo:
backend/data/snapshots/<server_key>/
```
En Docker, estos snapshots deben persistirse bajo:
```text
/app/data/snapshots/<server_key>/
```
Ejemplos:
- `backend/data/snapshots/comunidad-hispana-01/server-summary.json`
@@ -260,6 +326,16 @@ La persistencia usa una identidad de archivo estable por combinacion de
servidor, tipo y metrica para que cada refresh reemplace el artefacto anterior
sin mezclarlo con el historico bruto.
Resumen de persistencia recomendada para contenedor:
- montar `/app/data`
- conservar el SQLite historico en `/app/data/hll_vietnam_dev.sqlite3`
- conservar los snapshots JSON en `/app/data/snapshots/`
Con `docker compose`, esa persistencia ya queda montada desde:
- `./backend/data -> /app/data`
## Bootstrap del colector
El backend incluye un bootstrap minimo para el futuro flujo de snapshots:
@@ -594,6 +670,14 @@ python -m app.historical_ingestion refresh
python -m app.historical_runner --interval 1800
```
Los mismos flujos desde Docker Compose:
```powershell
docker compose exec backend python -m app.historical_ingestion bootstrap
docker compose exec backend python -m app.historical_ingestion refresh
docker compose exec backend python -m app.historical_runner --interval 1800
```
Flags utiles:
- `--server comunidad-hispana-01` para limitar a un servidor
@@ -676,6 +760,13 @@ Flags utiles del runner:
- `--retry-delay 10` para bajar la espera entre fallos
- `--max-runs 1` para una validacion puntual sin bucle indefinido
Para regenerar snapshots de forma puntual dentro del contenedor sin dejar un
bucle permanente, la validacion operativa minima es:
```powershell
docker compose exec backend python -m app.historical_runner --max-runs 1
```
Variables utiles del runner:
- `HLL_HISTORICAL_SNAPSHOT_REFRESH_INTERVAL_SECONDS`