docker-compose.yml
Rama main · réplica de lectura del repositorio original.
# Ciaren — Visual ETL Builder
#
# Quick start:
# docker compose up --build
# open http://localhost:8055
#
# To enable optional feature bundles, pass EXTRAS at build time:
# EXTRAS=ml docker compose build # ML nodes (scikit-learn, XGBoost, MLflow)
# EXTRAS=postgres docker compose build # PostgreSQL connector
# EXTRAS=ml,postgres docker compose build # both
# EXTRAS=all-connectors docker compose build # common DB/object-storage connectors
#
# All CIAREN_* env vars below map to `ciaren serve` flags.
# Run `docker compose exec ciaren ciaren info` to inspect resolved settings.
services:
ciaren:
build:
context: .
dockerfile: Dockerfile
args:
# Comma-separated optional extras: ml, postgres, mysql, mongo, s3, gcs,
# azure, signing, all-connectors, all
EXTRAS: ${EXTRAS:-}
image: ciaren:latest
ports:
- "${CIAREN_PORT:-8055}:8055"
volumes:
- ciaren-data:/data
environment:
CIAREN_ENVIRONMENT: ${CIAREN_ENVIRONMENT:-production}
# ── Dataframe engine & execution ────────────────────────────────────────
CIAREN_DEFAULT_ENGINE: ${CIAREN_DEFAULT_ENGINE:-polars}
CIAREN_EXECUTION_MODE: ${CIAREN_EXECUTION_MODE:-thread}
CIAREN_RUN_TIMEOUT_SECONDS: ${CIAREN_RUN_TIMEOUT_SECONDS:-0}
# ── Scheduler ───────────────────────────────────────────────────────────
CIAREN_SCHEDULER_ENABLED: ${CIAREN_SCHEDULER_ENABLED:-true}
CIAREN_SCHEDULER_POLL_INTERVAL_SECONDS: ${CIAREN_SCHEDULER_POLL_INTERVAL_SECONDS:-30}
CIAREN_SCHEDULER_MAX_CONCURRENT_RUNS: ${CIAREN_SCHEDULER_MAX_CONCURRENT_RUNS:-1}
CIAREN_SCHEDULER_MAX_CONSECUTIVE_FAILURES: ${CIAREN_SCHEDULER_MAX_CONSECUTIVE_FAILURES:-5}
# ── ML extension (requires EXTRAS=ml at build time) ─────────────────────
CIAREN_ML_ENABLED: ${CIAREN_ML_ENABLED:-true}
CIAREN_MLFLOW_TRACKING_URI: ${CIAREN_MLFLOW_TRACKING_URI:-/data/mlruns}
# ── Database (SQLite default, zero setup) ───────────────────────────────
# PostgreSQL: set DATABASE_URL=postgresql+asyncpg://user:pass@host:5432/db
# and rebuild with EXTRAS=postgres or EXTRAS=all-connectors
CIAREN_DATABASE_URL: ${CIAREN_DATABASE_URL:-sqlite+aiosqlite:////data/ciaren.db}
# ── Upload limit ────────────────────────────────────────────────────────
CIAREN_MAX_UPLOAD_SIZE_MB: ${CIAREN_MAX_UPLOAD_SIZE_MB:-100}
# ── CORS (unset = same-origin; set if API is accessed from other origins)
# CIAREN_CORS_ORIGINS: '["https://your-domain.com"]'
restart: unless-stopped
healthcheck:
test:
- CMD
- python
- -c
- "import urllib.request; urllib.request.urlopen('http://localhost:8055/health')"
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
volumes:
ciaren-data: