mirror of
https://origin.cursor.com/mrdevmx/panels.git
synced 2026-10-09 10:43:18 +00:00
Coolify usa docker-compose.yml: migrate aplica schema (!dev) y la API espera a que termine. Postgres/Redis locales quedan en docker-compose.local.yml. Co-authored-by: alberto.martinez <alberto.martinez@mrdev.mx>
99 lines
2.8 KiB
YAML
99 lines
2.8 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.
|
|
#
|
|
# Local: docker compose -f docker-compose.yml -f docker-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:
|