Guía Docker — ArcorTruck BackOffice

Stack db + API + frontend en contenedores

Guía Docker — ArcorTruck BackOffice (demo)

Esta guía describe cómo levantar el entorno con tres contenedores (frontend, API .NET 8 y SQL Server 2022), qué URLs usar y cómo comprobar que el sistema funciona con datos de prueba precargados.


1. Requisitos

yaml platform: linux/amd64


2. Cómo iniciar el stack

En la raíz del repositorio (donde está docker-compose.yml):

Stack completo (SQL en contenedor — demo):

docker compose -f docker-compose.yml -f docker-compose.dev.yml --profile dev up -d --build

Solo app (SQL en el host Windows — similar a IIS):

docker compose -f docker-compose.yml -f docker-compose.app.yml --profile app up -d --build

Ver instalacion_iis_windows.md para producción en IIS.

Script de reset / restore (scripts/docker-dev-reset.ps1)

Comando Efecto
-BakPath "…\ArcorGev5Reparto.bak" Reset completo: down → up --build → restore → restart api
-BakPath "…" -SkipDown No hace down; sube el stack si falta; solo restaura si I_CLIENTES está vacío
-BakPath "…" -RestoreOnly Igual que -SkipDown + sin rebuild de imágenes
-BakPath "…" -ForceRestore Restaura el .bak aunque ya haya datos (REPLACE)
-DestroyOnly Solo docker compose down

3. Puertos y servicios

Servicio Contenedor Puerto en tu máquina Descripción
web web 3000 Frontend estático (nginx) + proxy de /api hacia la API.
api api 5000 ASP.NET Core 8 (Kestrel en el puerto 8080 interno).
db db 14333 → 1433 SQL Server; usuario sa (solo entorno de demo).

Credenciales de demo (no usar en producción):


4. Cómo ingresar y ver el sistema funcionando

4.1 Abrir la aplicación web

  1. Abrí el navegador en: http://localhost:3000
  2. Deberías ver el panel “ArcorTruck · BackOffice (demo)” con:
  3. Indicador “API · SQL Server OK” (verde) si la API alcanzó la base.
  4. Tarjetas de resumen (hojas de reparto, visitas, entregas, montos).
  5. Tablas de repartidores, clientes y hojas de reparto con datos de prueba.

Si ves un mensaje de error de conexión, esperá unos segundos y recargá: la API aplica migraciones EF al iniciar y puede tardar un poco la primera vez.

4.2 Probar la API directamente

El frontend llama a la misma API vía proxy en el mismo origen: http://localhost:3000/api/... (nginx reenvía al contenedor api).

4.3 Conectar un cliente SQL (opcional)

Desde tu host (con sqlcmd, Azure Data Studio, DBeaver, etc.):

Bases disponibles en el mismo servidor:

Base Uso
GotruckDemo Prototipo EF del repo (semilla demo: Repartidores, Clientes, HojasReparto, Usuarios)
ArcorGev5Reparto Base operativa del cliente (restaurada desde .bak de producción)

4.4 Base operativa ArcorGev5Reparto — regla de lectura

La base del cliente define dos conjuntos de tablas operativas además de los maestros I_*:

Prefijo Significado Backoffice
D_ Descarga desde equipos móviles; puede estar incompleta No usar en reportes ni UI
E_ Datos validados y completos Sí — fuente para reportes, tableros y mapas
I_ Maestros importados (ERP) Sí — filtros y dimensiones

Documentación completa: base_datos_arcor_gev5.html en esta carpeta; versión HTML en ../html/base_datos_arcor_gev5.html.


5. Datos de prueba incluidos (GotruckDemo)

Los datos se insertan con la migración EF InitialCreate (semilla en AppDbContext):

El endpoint GET /api/dashboard/summary agrega todas las hojas para mostrar totales en el panel.


6. Desarrollo local sin Docker (opcional)

  1. Levantá solo SQL Server: docker compose up -d db y esperá estado healthy.
  2. API: en src/GoTruckBackoffice.Api, appsettings.json ya apunta a localhost,14333 con la misma contraseña.
  3. dotnet run en la carpeta de la API (puerto según launchSettings.json, típicamente 5xxx).
  4. Frontend: en src/Web, npm install y npm run dev (Vite en 5173 con proxy a 5000 en vite.config.ts). Ajustá el proxy si tu API usa otro puerto.

7. Detener y limpiar

docker compose down

Para borrar también los datos persistentes del volumen de SQL Server (si en el futuro agregás un volumen nombrado), usá docker volume ls / docker volume rm según corresponda. En la configuración actual, los datos viven en la capa del contenedor db; al eliminar el contenedor sin volumen externo, se pierden al hacer docker compose down seguido de prune de contenedores.


8. Estructura relevante

Ruta Rol
docker-compose.yml Orquestación db, api, web.
src/GoTruckBackoffice.Api/ API .NET 8, EF Core, migraciones y Dockerfile.
src/Web/ Frontend Vite + TypeScript, nginx en producción.
docs/html/base_datos_arcor_gev5.html Convención D_ / E_ / I_ y reglas para la API.

9. Solución de problemas


Entorno pensado únicamente para demostración y desarrollo; no exponer la contraseña sa ni estos puertos en redes públicas.