name: durable-workflow-server # Generated by scripts/ci/sync-source-release.mjs. Do not edit the fallback. x-server-image: &server-image ${DW_SERVER_IMAGE:-durableworkflow/server:${DW_SERVER_TAG:-2.2.1}} x-server-environment: &server-environment APP_NAME: "Durable Workflow Server" APP_ENV: ${APP_ENV:-local} DW_SERVER_KEY: ${DW_SERVER_KEY:-} APP_VERSION: ${APP_VERSION:-${DW_SERVER_TAG:-2.2.1}} APP_DEBUG: ${APP_DEBUG:-false} LOG_CHANNEL: ${LOG_CHANNEL:-stderr} LOG_LEVEL: ${LOG_LEVEL:-info} DB_CONNECTION: mysql DB_HOST: mysql DB_PORT: 3306 DB_DATABASE: ${DB_DATABASE:-durable_workflow} DB_USERNAME: ${DB_USERNAME:-workflow} DB_PASSWORD: ${DB_PASSWORD:-workflow} REDIS_HOST: redis QUEUE_CONNECTION: redis CACHE_STORE: redis DW_TASK_DISPATCH_MODE: ${DW_TASK_DISPATCH_MODE:-poll} DW_AUTH_DRIVER: ${DW_AUTH_DRIVER:-token} DW_AUTH_TOKEN: ${DW_AUTH_TOKEN:-dev-token} DW_PRINCIPAL_TOKENS: ${DW_PRINCIPAL_TOKENS:-${WORKFLOW_SERVER_PRINCIPAL_TOKENS:-}} DW_RUNTIME_CREDENTIALS_ENABLED: ${DW_RUNTIME_CREDENTIALS_ENABLED:-${WORKFLOW_SERVER_RUNTIME_CREDENTIALS_ENABLED:-false}} DW_WORKER_TOKEN: ${DW_WORKER_TOKEN:-} DW_OPERATOR_TOKEN: ${DW_OPERATOR_TOKEN:-} DW_ADMIN_TOKEN: ${DW_ADMIN_TOKEN:-} DW_AUTH_BACKWARD_COMPATIBLE: ${DW_AUTH_BACKWARD_COMPATIBLE:-true} DW_EXTERNAL_PAYLOAD_S3_ACCESS_KEY_ID: ${DW_EXTERNAL_PAYLOAD_S3_ACCESS_KEY_ID:-} DW_EXTERNAL_PAYLOAD_S3_SECRET_ACCESS_KEY: ${DW_EXTERNAL_PAYLOAD_S3_SECRET_ACCESS_KEY:-} DW_EXTERNAL_PAYLOAD_S3_SESSION_TOKEN: ${DW_EXTERNAL_PAYLOAD_S3_SESSION_TOKEN:-} DW_EXTERNAL_PAYLOAD_S3_REGION: ${DW_EXTERNAL_PAYLOAD_S3_REGION:-us-east-1} DW_EXTERNAL_PAYLOAD_S3_BUCKET: ${DW_EXTERNAL_PAYLOAD_S3_BUCKET:-} DW_EXTERNAL_PAYLOAD_S3_ENDPOINT: ${DW_EXTERNAL_PAYLOAD_S3_ENDPOINT:-} DW_EXTERNAL_PAYLOAD_S3_USE_PATH_STYLE_ENDPOINT: ${DW_EXTERNAL_PAYLOAD_S3_USE_PATH_STYLE_ENDPOINT:-false} services: bootstrap: image: *server-image platform: ${DW_SERVER_PLATFORM:-} command: ["server-bootstrap"] healthcheck: disable: true environment: <<: *server-environment depends_on: mysql: condition: service_healthy redis: condition: service_healthy server: image: *server-image platform: ${DW_SERVER_PLATFORM:-} ports: - "${SERVER_PORT:-8080}:8080" environment: <<: *server-environment DW_SERVER_TOPOLOGY_SHAPE: standalone_server DW_SERVER_PROCESS_CLASS: server_http_node depends_on: bootstrap: condition: service_completed_successfully mysql: condition: service_healthy redis: condition: service_healthy healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8080/api/ready"] interval: 10s timeout: 5s retries: 3 worker: image: *server-image platform: ${DW_SERVER_PLATFORM:-} command: php artisan queue:work --sleep=1 --tries=3 --max-time=3600 healthcheck: test: ["CMD", "server-process-healthcheck", "worker"] interval: 5s timeout: 3s retries: 3 start_period: 5s environment: <<: *server-environment DW_SERVER_TOPOLOGY_SHAPE: standalone_server DW_SERVER_PROCESS_CLASS: worker_node depends_on: bootstrap: condition: service_completed_successfully server: condition: service_healthy mysql: condition: service_healthy redis: condition: service_healthy scheduler: image: *server-image platform: ${DW_SERVER_PLATFORM:-} init: true command: >- sh -c 'while true; do php artisan schedule:evaluate --limit=100 --json; php artisan activity:timeout-enforce --limit=100; php artisan history:prune --limit=100; sleep 10; done' healthcheck: test: ["CMD", "server-process-healthcheck", "scheduler"] interval: 5s timeout: 3s retries: 3 start_period: 5s environment: <<: *server-environment DW_SERVER_TOPOLOGY_SHAPE: standalone_server DW_SERVER_PROCESS_CLASS: scheduler_node depends_on: bootstrap: condition: service_completed_successfully mysql: condition: service_healthy redis: condition: service_healthy mysql: image: mysql:${MYSQL_VERSION:-8.0} environment: MYSQL_DATABASE: ${DB_DATABASE:-durable_workflow} MYSQL_USER: ${DB_USERNAME:-workflow} MYSQL_PASSWORD: ${DB_PASSWORD:-workflow} MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD:-root} volumes: - mysql_data:/var/lib/mysql healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] interval: 5s timeout: 3s retries: 20 redis: image: redis:${REDIS_VERSION:-7-alpine} volumes: - redis_data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 3s retries: 5 volumes: mysql_data: redis_data: