Skip to content

Contenedores Docker

Daniel J. Saldaña edited this page Oct 29, 2026 · 1 revision

Contenedores Docker

🇬🇧 English

El Dockerfile tiene tres targets. Las imágenes usan la salida standalone de Next.js, Node.js 24 y un usuario sin privilegios. Se construyen sin credenciales ni acceso a la base de datos.

Target Uso
runner Target por defecto: la aplicación web en el puerto 4000.
collector Importa el inventario de Blob Storage a PostgreSQL.
migrator Job previo al despliegue que aplica las migraciones.
docker build -t cloud-inventory-web .
docker build --target collector -t cloud-inventory-collector .
docker build --target migrator  -t cloud-inventory-migrator .

docker run --rm --env-file .env -v "$PWD/certs:/app/certs:ro" cloud-inventory-migrator
docker run --rm --env-file .env -v "$PWD/certs:/app/certs:ro" cloud-inventory-collector azure
docker run -d --name cloud-inventory -p 4000:4000 --env-file .env \
  -v "$PWD/certs:/app/certs:ro" cloud-inventory-web
  • .env se pasa en tiempo de ejecución y nunca se copia a las imágenes.
  • Monta una CA privada en /app/certs y configura DB_SSL_CA_PATH si PostgreSQL la usa.
  • Usa host.docker.internal como DB_HOST para acceder a un PostgreSQL en el host.
  • Docker usa sus propios node_modules, independientes de tu instalación local.

Comprobaciones de salud

Endpoint Comprueba
/api/health/ Que el proceso está vivo.
/api/ready/ Base de datos y esquema.

Compose

compose.example.yaml muestra el orden esperado: el migrador debe terminar correctamente antes de arrancar la web y el colector.

Migraciones en producción

Ejecuta las migraciones como un job separado contra el endpoint de escritura, con un usuario DDL (DB_MIGRATION_*), antes de enviar tráfico a la nueva versión. El proceso web nunca ejecuta DDL y las migraciones nunca se lanzan automáticamente al arrancar cada réplica. Después ejecuta db:check, arranca las nuevas réplicas y espera a que /api/ready/ devuelva 200.

Consulta el procedimiento de migración en docs/backend.md.

Clone this wiki locally