1.9 KiB
1.9 KiB
db (migraciones)
Contenedor de un solo uso que aplica las migraciones de base de datos con Alembic. Se ejecuta al arrancar el stack y termina con código 0 al completar. El orquestador Docker reinicia en caso de error.
Comportamiento
- Conecta a PostgreSQL.
- Adquiere un advisory lock para evitar ejecuciones concurrentes.
- Aplica todas las migraciones pendientes.
- Termina.
Los demás servicios tienen depends_on: db-migrations: condition: service_completed_successfully, por lo que no arrancan hasta que las migraciones terminen.
Variables de entorno
| Variable | Descripción |
|---|---|
DATABASE_URL |
PostgreSQL (postgresql+psycopg://...) |
Esquema de base de datos
jobs — contenedor de un trabajo del usuario (multimódulo)
tasks — ejecución de un módulo dentro de un job
type: counting | extraction | cleaning
count_job_files — resultado de conteo por PDF (job_module_id → tasks.id)
extraction_batches — lote de extracción (job_module_id → tasks.id)
extraction_rows — fila extraída (batch_id → extraction_batches.id)
cleaning_jobs — job de limpieza (task_id → tasks.id)
cleaned_rows — fila limpiada (cleaning_job_id → cleaning_jobs.id)
Documentación completa en docs/database.dbml.
Estructura del código
Dockerfile — imagen Python slim + alembic + psycopg
alembic.ini — configuración de Alembic
alembic/
env.py — entorno de migraciones con advisory lock
versions/
0001_initial_schema.py
0002_add_jobs_and_count.py
run_migrations.py — script principal con manejo de errores
requirements.txt
Añadir una migración
# Generar una nueva revisión
docker run --rm -e DATABASE_URL=... ipsextractor-db-migrations \
alembic revision --autogenerate -m "descripcion"