mirror of
https://origin.cursor.com/mrdevmx/panels.git
synced 2026-10-09 14:03:16 +00:00
66 lines
1.7 KiB
YAML
66 lines
1.7 KiB
YAML
# Coolify / local stack — 3 services, 0 managed DBs (2 SQLite en volumen)
|
|
#
|
|
# Secretos OBLIGATORIOS (sin default en compose): defínelos en Coolify o en un
|
|
# archivo .env local (gitignored). Si faltan, `docker compose` falla al arrancar.
|
|
services:
|
|
api:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.api
|
|
restart: unless-stopped
|
|
environment:
|
|
PORT: ${PORT:-8000}
|
|
SESSION_SECRET: ${SESSION_SECRET:?SESSION_SECRET is required}
|
|
DOCS_KEY: ${DOCS_KEY:?DOCS_KEY is required (64 hex chars)}
|
|
SEED_PASSWORD: ${SEED_PASSWORD:?SEED_PASSWORD is required}
|
|
API_KEY: ${API_KEY:-}
|
|
PANEL_LOGIN_URL: ${PANEL_LOGIN_URL:?PANEL_LOGIN_URL is required}
|
|
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:-}
|
|
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: 45s
|
|
|
|
web-panel:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.web-panel
|
|
restart: unless-stopped
|
|
depends_on:
|
|
api:
|
|
condition: service_healthy
|
|
expose:
|
|
- "80"
|
|
|
|
web-saas:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.web-saas
|
|
restart: unless-stopped
|
|
depends_on:
|
|
api:
|
|
condition: service_healthy
|
|
expose:
|
|
- "80"
|
|
|
|
volumes:
|
|
panel-data:
|