LAMB / RUNBOOK
Guía del equipo · Docker Compose

Una pila.
Tres modos.

La configuración base define LAMB una sola vez. Los overlays añaden exactamente lo que necesita cada entorno: recarga en desarrollo o TLS en explotación.

Composición por capas base estable
next.dev.yamlsolo desarrollo

Bind mounts · Uvicorn reload · Vite :5173

next.yamlsiempre

Servicios · red · imágenes · datos persistentes

next.prod.yamlsolo explotación

Caddy · dominios · certificados TLS

Elige por intención

No mantenemos pilas distintas. Partimos siempre de docker-compose.next.yaml y añadimos una capa cuando el contexto lo exige.

Local estable

Como se entrega

Para probar las imágenes empaquetadas antes de desplegar.

  • Frontend incluido en LAMB
  • Sin código montado
  • Actualización mediante pull
Explotación

Base + TLS

Para servidores con dominios y terminación HTTPS mediante Caddy.

  • Imágenes publicadas
  • Volúmenes persistentes
  • Caddy como overlay

Comandos de trabajo

Selecciona el contexto y copia el comando completo. Todos deben ejecutarse desde la raíz del repositorio.

Desarrollo con hot reload

El navegador de trabajo es Vite; las APIs siguen en sus puertos habituales.

UI :5173
cd /opt/lamb
docker compose \
  -f docker-compose.next.yaml \
  -f docker-compose.next.dev.yaml \
  up -d

Cambios en Python reinician el servicio correspondiente. Cambios en Svelte se reflejan mediante HMR.

Qué ocurre debajo

El overlay cambia cómo entra el código, no dónde viven los datos ni cómo se comunican los servicios.

Servicios y puertos

La red y los nombres de servicio son iguales en todos los modos.

LAMBAPI + frontend compilado9099
Knowledge Baseingesta y búsqueda9090
Library Managerrepositorio documental9091
OpenWebUIinterfaz de chat8080
Frontend devsolo con overlay dev5173

Código efímero, datos persistentes

Los bind mounts cambian por entorno; los volúmenes con datos se mantienen.

./backend→/app/backend
./…/kb/backend→/app/backend
./library-manager/backend→/app
./frontend/svelte-app→/app

Bases de datos, índices, documentos y configuración permanecen en volúmenes Docker con nombre.

Reglas sencillas

Estas decisiones evitan la mayoría de las diferencias entre el portátil de desarrollo y el servidor.

Haz esto

  • Usa siempre next.yaml como base.
  • Añade exactamente un overlay según el contexto.
  • Accede a Vite por el puerto 5173 durante el desarrollo.
  • Reconstruye imágenes cuando cambien dependencias Python.
  • Haz pull antes de actualizar explotación.

Evita esto

  • No uses el antiguo docker-compose.yaml.
  • No montes todo el repositorio dentro de cada contenedor.
  • No esperes hot reload al ejecutar solo la pila base.
  • No uses down -v en un entorno con datos valiosos.
  • No despliegues con secretos o hosts de desarrollo.

Antes de compartir un cambio

Una comprobación corta mantiene alineados código, imágenes y operación.

01

Estado saludable

Comprueba que todos los servicios necesarios estén activos.

02

UI correcta

Prueba en 5173 durante desarrollo y en 9099 con la imagen final.

03

Dependencias al día

Reconstruye si cambió Python; reinicia Vite si cambió package.json.

04

Logs limpios

Revisa errores recientes antes de publicar o desplegar.