Ctrl K
ComunidadGuías…

docker-compose.yml

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# 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: