# version: "3.8"

services:
  spiffworkflow-frontend:
    container_name: spiffworkflow-frontend
    image: ghcr.io/sartography/spiffworkflow-frontend:latest
    depends_on:
      spiffworkflow-backend:
        condition: service_started
    environment:
      APPLICATION_ROOT: "/"
      PORT0: "${SPIFFWORKFLOW_FRONTEND_PORT:-8001}"
    ports:
      - "${SPIFFWORKFLOW_FRONTEND_PORT:-8001}:${SPIFFWORKFLOW_FRONTEND_PORT:-8001}/tcp"

  spiffworkflow-backend:
    container_name: spiffworkflow-backend
    image: ghcr.io/sartography/spiffworkflow-backend:latest
    environment:
      SPIFFWORKFLOW_BACKEND_ENV: "local_docker"
      FLASK_DEBUG: "0"
      FLASK_SESSION_SECRET_KEY: "${FLASK_SESSION_SECRET_KEY:-super_secret_key}"
      # WARNING: Frontend is a static site which assumes frontend port - 1 on localhost.
      SPIFFWORKFLOW_BACKEND_URL: "http://localhost:${SPIFF_BACKEND_PORT:-8000}"

      SPIFFWORKFLOW_BACKEND_BPMN_SPEC_ABSOLUTE_DIR: "/app/process_models"
      SPIFFWORKFLOW_BACKEND_CONNECTOR_PROXY_URL: "http://spiffworkflow-connector:8004"
      SPIFFWORKFLOW_BACKEND_DATABASE_TYPE: "sqlite"
      SPIFFWORKFLOW_BACKEND_DATABASE_URI: "sqlite:////app/db_volume/db.sqlite3"
      SPIFFWORKFLOW_BACKEND_LOAD_FIXTURE_DATA: "false"
      SPIFFWORKFLOW_BACKEND_LOG_LEVEL: "DEBUG"
      SPIFFWORKFLOW_BACKEND_OPEN_ID_CLIENT_ID: "spiffworkflow-backend"
      SPIFFWORKFLOW_BACKEND_OPEN_ID_CLIENT_SECRET_KEY: "my_open_id_secret_key"
      SPIFFWORKFLOW_BACKEND_OPEN_ID_SERVER_URL: "http://localhost:${SPIFF_BACKEND_PORT:-8000}/openid"
      SPIFFWORKFLOW_BACKEND_PERMISSIONS_FILE_NAME: "example.yml"
      SPIFFWORKFLOW_BACKEND_PORT: "${SPIFF_BACKEND_PORT:-8000}"
      SPIFFWORKFLOW_BACKEND_RUN_BACKGROUND_SCHEDULER_IN_CREATE_APP: "true"
      SPIFFWORKFLOW_BACKEND_UPGRADE_DB: "true"
      SPIFFWORKFLOW_BACKEND_URL_FOR_FRONTEND: "http://localhost:${SPIFFWORKFLOW_FRONTEND_PORT:-8001}"
    ports:
      - "${SPIFF_BACKEND_PORT:-8000}:${SPIFF_BACKEND_PORT:-8000}/tcp"
    volumes:
      - ${SPIFFWORKFLOW_BACKEND_LOCAL_BPMN_SPEC_DIR:-./process_models}:/app/process_models
      - spiffworkflow_backend_db:/app/db_volume
    healthcheck:
      test: "curl localhost:${SPIFF_BACKEND_PORT:-8000}/v1.0/status --fail"
      interval: 10s
      timeout: 5s
      retries: 20

  spiffworkflow-connector:
    container_name: spiffworkflow-connector
    image: ghcr.io/sartography/connector-proxy-demo:latest
    environment:
      FLASK_ENV: "${FLASK_ENV:-development}"
      FLASK_DEBUG: "0"
      FLASK_SESSION_SECRET_KEY: "${FLASK_SESSION_SECRET_KEY:-super_secret_key}"
      CONNECTOR_PROXY_PORT: "${SPIFF_CONNECTOR_PORT:-8004}"
    ports:
      - "${SPIFF_CONNECTOR_PORT:-8004}:${SPIFF_CONNECTOR_PORT:-8004}/tcp"
    healthcheck:
      test: "curl localhost:${SPIFF_CONNECTOR_PORT:-8004}/liveness --fail"
      interval: 10s
      timeout: 5s
      retries: 20

volumes:
  spiffworkflow_backend_db:
    driver: local