panels-origin/docker-compose.yml
Cursor Agent 05ea4e942f
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 <alberto.martinez@mrdev.mx>
2026-09-03 05:19:10 +00:00

100 lines
2.9 KiB
YAML

# Coolify / producción — Postgres y Redis son recursos gestionados aparte.
# 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.
#
# 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:
context: .
dockerfile: Dockerfile.migrate
restart: "no"
environment:
DATABASE_URL_PLATFORM_OWNER: ${DATABASE_URL_PLATFORM_OWNER:?}
DATABASE_URL_IAM_OWNER: ${DATABASE_URL_IAM_OWNER:?}
DATABASE_URL_CORE_OWNER: ${DATABASE_URL_CORE_OWNER:?}
command: ["all", "--context-filter=!dev"]
api:
build:
context: .
dockerfile: Dockerfile.api
restart: unless-stopped
depends_on:
migrate:
condition: service_completed_successfully
environment:
DENO_ENV: ${DENO_ENV:-production}
PORT: ${PORT:-8000}
SESSION_SECRET: ${SESSION_SECRET:?}
DOCS_KEY: ${DOCS_KEY:?}
SEED_PASSWORD: ${SEED_PASSWORD:-}
API_KEY: ${API_KEY:-}
PANEL_LOGIN_URL: ${PANEL_LOGIN_URL:?}
COOKIE_SECURE: ${COOKIE_SECURE:-true}
CORS_ORIGINS: ${CORS_ORIGINS:-}
VCARD_BASE: ${VCARD_BASE:-}
SMTP_HOST: ${SMTP_HOST:-}
SMTP_PORT: ${SMTP_PORT:-587}
SMTP_USER: ${SMTP_USER:-}
SMTP_PASS: ${SMTP_PASS:-}
SMTP_FROM: ${SMTP_FROM:-}
DATABASE_URL_PLATFORM: ${DATABASE_URL_PLATFORM:?}
DATABASE_URL_PLATFORM_OWNER: ${DATABASE_URL_PLATFORM_OWNER:-}
DATABASE_URL_IAM: ${DATABASE_URL_IAM:?}
DATABASE_URL_IAM_OWNER: ${DATABASE_URL_IAM_OWNER:?}
DATABASE_URL_CORE: ${DATABASE_URL_CORE:?}
DATABASE_URL_CORE_OWNER: ${DATABASE_URL_CORE_OWNER:?}
REDIS_URL_IAM: ${REDIS_URL_IAM:?}
REDIS_URL_CORE: ${REDIS_URL_CORE:?}
S3_ENDPOINT: ${S3_ENDPOINT:-}
S3_BUCKET: ${S3_BUCKET:-}
S3_REGION: ${S3_REGION:-auto}
S3_ACCESS_KEY_ID: ${S3_ACCESS_KEY_ID:-}
S3_SECRET_ACCESS_KEY: ${S3_SECRET_ACCESS_KEY:-}
volumes:
- panel-data:/app/data
expose:
- "8000"
healthcheck:
test:
[
"CMD",
"deno",
"eval",
"const r=await fetch('http://127.0.0.1:'+(Deno.env.get('PORT')||'8000')+'/v1/health'); if(!r.ok) Deno.exit(1)",
]
interval: 30s
timeout: 5s
retries: 5
start_period: 15s
web-panel:
build:
context: .
dockerfile: Dockerfile.web-panel
restart: unless-stopped
depends_on:
api:
condition: service_healthy
ports:
- "80"
expose:
- "80"
web-saas:
build:
context: .
dockerfile: Dockerfile.web-saas
restart: unless-stopped
depends_on:
api:
condition: service_healthy
ports:
- "80"
expose:
- "80"
volumes:
panel-data: