From 05ea4e942f445886634960256372068a948233d9 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Thu, 3 Sep 2026 05:19:10 +0000 Subject: [PATCH] ops: sacar el overlay local del glob docker-compose*.yml Coolify Reload Compose mezclaba docker-compose.local.yml y marcaba PLATFORM_*_PASSWORD / IAM_* / CORE_* / *_REDIS_PASSWORD como Required. Esas variables son solo para provision local; en Coolify van las URLs. Co-authored-by: alberto.martinez --- docker-compose.yml | 3 ++- docs/coolify.md | 8 ++++++-- docker-compose.local.yml => overlays/compose.local.yml | 3 ++- package.json | 4 ++-- 4 files changed, 12 insertions(+), 6 deletions(-) rename docker-compose.local.yml => overlays/compose.local.yml (94%) diff --git a/docker-compose.yml b/docker-compose.yml index 0d69c5e..54d0b40 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,7 +2,8 @@ # Liquibase corre solo en el job `migrate` (un shot por deploy); la API espera # a que termine. No arranca Java dentro del contenedor de tráfico. # -# Local: docker compose -f docker-compose.yml -f docker-compose.local.yml up --build +# Coolify: un solo archivo — docker-compose.yml. No añadir overlays. +# Local: docker compose -f docker-compose.yml -f overlays/compose.local.yml up --build services: migrate: build: diff --git a/docs/coolify.md b/docs/coolify.md index b9414e7..a50dd10 100644 --- a/docs/coolify.md +++ b/docs/coolify.md @@ -84,7 +84,7 @@ En Coolify el servicio de PANELS se llama **`web-panel`** (FQDN ej. `panels.mrde 1. **Provisionar Postgres, Redis y bucket** — 1 de cada **por ambiente** (no por módulo; no compartir prod con staging). 2. **Crear accesos y validar**: `./db/provision/create-accesses.sh --apply --verify --out .env..local` contra esos hosts (ver [`db/provision/README.md`](../db/provision/README.md)). Coolify no crea los roles `panels_*` ni los ACL de Redis solo. -3. **Coolify → Docker Compose** → `docker-compose.yml` (este archivo **no** levanta Postgres/Redis; usa los recursos que ya creaste). Conecta el stack a la **misma red** que Postgres y Redis (Connect to Predefined Network). +3. **Coolify → Docker Compose** → **solo** `docker-compose.yml` (Compose Location). **No** añadas `overlays/compose.local.yml` ni ningún `docker-compose.local.yml`. El overlay local pide `PLATFORM_*_PASSWORD` etc.; en Coolify esas 8 variables **no** se rellenan: los accesos van en las `DATABASE_URL_*` / `REDIS_URL_*` ya expandidas. Este archivo **no** levanta Postgres/Redis; usa los recursos que ya creaste. Conecta el stack a la **misma red** que Postgres y Redis (Connect to Predefined Network). 4. Cargar en el recurso compose **todas** las variables obligatorias (incluidas las 3 `DATABASE_URL_*_OWNER`: las usa el job `migrate`). `DENO_ENV=production`. 5. **Deploy.** En cada deploy corre `migrate` (`--context-filter=!dev`, sin demo) y **después** arranca `api`. No hace falta entrar al VPS a correr Liquibase. 6. **Bootstrap del primer admin** (solo la primera vez): `bootstrap-admin.ts` (ver `db/README.md`). @@ -104,11 +104,15 @@ Además, el recurso Docker Compose de PANELS debe estar en la **misma red** que Tras corregir las URLs, redesplegar y revisar `docker logs` del contenedor `migrate-*` (debe terminar con Liquibase `Update has been successful` o similar, exit 0). El `docker stop … No such container` del helper de Coolify es ruido de limpieza, no la causa. +### Coolify pide `PLATFORM_OWNER_PASSWORD`, `IAM_APP_PASSWORD`, `*_REDIS_PASSWORD`… + +Eso sale de **Reload Compose** mezclando el overlay de desarrollo. En producción **no las rellenes**. En el recurso: Compose file = `docker-compose.yml` únicamente. Borra esas 8 variables si Coolify las marcó Required. Siguen haciendo falta las URLs completas (`DATABASE_URL_*`, `REDIS_URL_*`). + ## Local (todo en docker-compose, incluyendo Postgres/Redis propios) ```bash cp .env.example .env -docker compose -f docker-compose.yml -f docker-compose.local.yml up --build +docker compose -f docker-compose.yml -f overlays/compose.local.yml up --build ``` El overlay local añade Postgres/Redis + `provision` y corre Liquibase con `context=dev` (demo). diff --git a/docker-compose.local.yml b/overlays/compose.local.yml similarity index 94% rename from docker-compose.local.yml rename to overlays/compose.local.yml index 09eb1f4..acdadbc 100644 --- a/docker-compose.local.yml +++ b/overlays/compose.local.yml @@ -1,5 +1,6 @@ # Desarrollo local: Postgres + Redis en compose, provision y seed `dev`. -# Uso: docker compose -f docker-compose.yml -f docker-compose.local.yml up --build +# NO usar en Coolify (vive fuera de docker-compose*.yml para que Reload no lo mezcle). +# Uso: docker compose -f docker-compose.yml -f overlays/compose.local.yml up --build services: postgres: image: postgres:16-alpine diff --git a/package.json b/package.json index a5cc433..85867f0 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "dev:web": "cd web-panel && npm run dev", "dev:saas": "cd web-saas && npm run dev", "db:migrate": "./db/update.sh all", - "docker:build": "docker compose -f docker-compose.yml -f docker-compose.local.yml build", - "docker:up": "docker compose -f docker-compose.yml -f docker-compose.local.yml up -d" + "docker:build": "docker compose -f docker-compose.yml -f overlays/compose.local.yml build", + "docker:up": "docker compose -f docker-compose.yml -f overlays/compose.local.yml up -d" } }