compose: unir migrate y api a la red coolify

El host qzegekm3sr2bevgxl4wh4th2 es el UUID interno de Postgres;
solo resuelve en esa red. Sin ella Liquibase lanza UnknownHostException.

Co-authored-by: alberto.martinez <alberto.martinez@mrdev.mx>
This commit is contained in:
Cursor Agent 2026-09-03 05:25:53 +00:00
parent 05d1a8c133
commit b68313c5ee
No known key found for this signature in database
3 changed files with 31 additions and 3 deletions

View file

@ -4,12 +4,18 @@
#
# 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
#
# `data` = red donde viven Postgres/Redis de Coolify (UUID tipo
# qzegekm3sr2bevgxl4wh4th2). Sin esta red, Liquibase da UnknownHostException.
services:
migrate:
build:
context: .
dockerfile: Dockerfile.migrate
restart: "no"
networks:
- default
- data
environment:
DATABASE_URL_PLATFORM_OWNER: ${DATABASE_URL_PLATFORM_OWNER:?}
DATABASE_URL_IAM_OWNER: ${DATABASE_URL_IAM_OWNER:?}
@ -53,6 +59,9 @@ services:
S3_REGION: ${S3_REGION:-auto}
S3_ACCESS_KEY_ID: ${S3_ACCESS_KEY_ID:-}
S3_SECRET_ACCESS_KEY: ${S3_SECRET_ACCESS_KEY:-}
networks:
- default
- data
volumes:
- panel-data:/app/data
expose:
@ -98,3 +107,8 @@ services:
volumes:
panel-data:
networks:
data:
name: ${PANELS_DOCKER_NETWORK:-coolify}
external: true

View file

@ -98,9 +98,17 @@ En Coolify el servicio de PANELS se llama **`web-panel`** (FQDN ej. `panels.mrde
El host de las 6 `DATABASE_URL_*` y de las 2 `REDIS_URL_*` **no** es el ID corto del contenedor (`docker exec -it c72dde7d6b47 …`). Docker DNS en Coolify **no** resuelve ese ID; Liquibase falla con `UnknownHostException`.
Usa el hostname de **Postgres URL (internal)** / **Redis URL (internal)** en Coolify: el segmento entre `@` y `:5432` (o `:6379`). Suele ser un UUID o el nombre de servicio de Coolify, no los 12 caracteres del `CONTAINER ID`.
Usa el hostname de **Postgres URL (internal)** / **Redis URL (internal)** en Coolify: el segmento entre `@` y `:5432` (o `:6379`). Un UUID tipo `qzegekm3sr2bevgxl4wh4th2` **es el host correcto**; un CONTAINER ID de 12 caracteres (`c72dde7d6b47`) no.
Además, el recurso Docker Compose de PANELS debe estar en la **misma red** que Postgres y Redis (Connect to Predefined Network, a menudo `coolify`). Si no, el hostname interno existe pero el contenedor `migrate` no lo ve.
Ese UUID solo resuelve en la red Docker **`coolify`**. `docker-compose.yml` une `migrate` y `api` a esa red (`networks.data`). En Coolify deja también **Connect to Predefined Network**. Redis tiene **otro** UUID (el de Redis URL internal), no el de Postgres.
Si tras unir la red sigue `UnknownHostException`, en el VPS:
```bash
sudo docker network inspect coolify | grep -E 'Name|Aliases|qzegekm3'
```
Usa el alias que aparezca junto al contenedor de Postgres (a veces `postgres-<uuid>`).
El log de deploy de Coolify **no** incluye stdout de Liquibase. Si `service "migrate" didn't complete successfully: exit 1`, el error real está en:
@ -108,7 +116,7 @@ El log de deploy de Coolify **no** incluye stdout de Liquibase. Si `service "mig
sudo docker logs migrate-<uuid-del-recurso>-<timestamp>
```
Ejemplo de este entorno: `sudo docker logs migrate-pdyrt8ccp804tfmutefau0k6-052025710094`. Debe verse `==> host JDBC: …` y el error de Liquibase. Un host de 12 caracteres hex (`c72dde7d6b47`) es el CONTAINER ID — cámbialo. `Liquibase OK` + exit 0 = bien.
Ejemplo: `sudo docker logs migrate-pdyrt8ccp804tfmutefau0k6-052025710094`. `UnknownHostException` con un UUID largo = `migrate` fuera de `coolify`, no un host mal copiado. `Liquibase OK` + exit 0 = bien.
El `docker stop … No such container` del helper de Coolify es ruido de limpieza, no la causa. El build de imágenes puede ser OK y el deploy igual falla en `migrate`.

View file

@ -79,3 +79,9 @@ services:
volumes:
postgres-data:
# El compose de Coolify exige la red externa `coolify`. En local no existe:
# esta red puente sustituye `data` (Compose 2.24+ !override).
networks:
data: !override
name: panels-local-data