Docker y desarrollo local
El stack local está en docker-compose.local.yaml, con los contextos de build
bajo compose/. Está calcado de seimseim-reservas.
Servicios
Sección titulada «Servicios»| Servicio | Para qué |
|---|---|
traefik | proxy en :80, manda /api /ws /admin al backend y / al frontend |
backend | Django en ASGI (uvicorn), corre las migraciones al arrancar |
celeryworker | tareas en segundo plano |
celerybeat | tareas programadas (la prueba nocturna contra Toteat) |
frontend | servidor de desarrollo de Vite |
postgres | Postgres 18 |
redis | Redis 7.2 (capa de channels y broker de celery) |
Comparado con reservas, le quitamos lo que el POS no necesita: la app de reservas, el mcp-server, flower y mailpit.
Perfiles
Sección titulada «Perfiles»just up # --profile full (todo)just up-backend # --profile backend (backend + celery + postgres + redis)just up-frontend # --profile frontendVariables de entorno
Sección titulada «Variables de entorno»Cada servicio tiene su archivo en .envs/.local/ (.backend, .postgres,
.frontend). Son valores de desarrollo, sin secretos, y sí van al repo. Los
secretos de producción viven en .envs/.production/, que está en el gitignore.
El entrypoint del backend arma el DATABASE_URL a partir de las variables
POSTGRES_* y espera a que Postgres esté listo antes de arrancar.
Cosas con las que te puedes tropezar
Sección titulada «Cosas con las que te puedes tropezar»- La versión de pnpm está fijada con
packageManagerpara que el corepack de la imagen de Node use la misma que el lockfile. - El puerto
:80tiene que estar libre. A veces otro stack local lo tiene tomado. - Sin Docker,
pnpm devsalta al siguiente puerto si el 5173 está ocupado. En Docker el puerto es fijo porque Traefik enruta hacia él.