Repository navigation
Contenedores Docker
Daniel J. Saldaña edited this page Oct 29, 2026
·
1 revision
🇬🇧 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-
.envse pasa en tiempo de ejecución y nunca se copia a las imágenes. - Monta una CA privada en
/app/certsy configuraDB_SSL_CA_PATHsi PostgreSQL la usa. - Usa
host.docker.internalcomoDB_HOSTpara acceder a un PostgreSQL en el host. - Docker usa sus propios
node_modules, independientes de tu instalación local.
| Endpoint | Comprueba |
|---|---|
/api/health/ |
Que el proceso está vivo. |
/api/ready/ |
Base de datos y esquema. |
compose.example.yaml muestra el orden esperado: el migrador debe terminar correctamente antes de arrancar la web y el colector.
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.