services: workflow-postgres: image: postgres:16-alpine restart: unless-stopped environment: POSTGRES_DB: ${WORKFLOW_POSTGRES_DB:-workflow} POSTGRES_USER: ${WORKFLOW_POSTGRES_USER:-workflow} POSTGRES_PASSWORD: ${WORKFLOW_POSTGRES_PASSWORD:-workflow} volumes: - workflow_postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${WORKFLOW_POSTGRES_USER:-workflow} -d ${WORKFLOW_POSTGRES_DB:-workflow} -h 127.0.0.1 || exit 1"] interval: 10s timeout: 5s retries: 12 app: build: context: . dockerfile: Dockerfile args: NEXT_PUBLIC_API_URL: ${NEXT_PUBLIC_API_URL:-} depends_on: workflow-postgres: condition: service_healthy restart: unless-stopped env_file: - path: ./.env required: false environment: PORT: 3000 HOSTNAME: 0.0.0.0 NEXT_PUBLIC_API_URL: ${NEXT_PUBLIC_API_URL:-} DATABASE_URL: ${DATABASE_URL:-file:/app/data/fiscal.sqlite} BETTER_AUTH_SECRET: ${BETTER_AUTH_SECRET:-} BETTER_AUTH_BASE_URL: ${BETTER_AUTH_BASE_URL:-https://fiscal.b11studio.xyz} BETTER_AUTH_ADMIN_USER_IDS: ${BETTER_AUTH_ADMIN_USER_IDS:-} BETTER_AUTH_TRUSTED_ORIGINS: ${BETTER_AUTH_TRUSTED_ORIGINS:-https://fiscal.b11studio.xyz} ZHIPU_API_KEY: ${ZHIPU_API_KEY:-} ZHIPU_MODEL: ${ZHIPU_MODEL:-glm-5} AI_TEMPERATURE: ${AI_TEMPERATURE:-0.2} SEC_USER_AGENT: ${SEC_USER_AGENT:-Fiscal Clone } WORKFLOW_TARGET_WORLD: ${WORKFLOW_TARGET_WORLD:-@workflow/world-postgres} WORKFLOW_POSTGRES_URL: ${WORKFLOW_POSTGRES_URL:-postgres://workflow:workflow@workflow-postgres:5432/workflow} WORKFLOW_POSTGRES_WORKER_CONCURRENCY: ${WORKFLOW_POSTGRES_WORKER_CONCURRENCY:-10} WORKFLOW_POSTGRES_JOB_PREFIX: ${WORKFLOW_POSTGRES_JOB_PREFIX:-fiscal_} WORKFLOW_LOCAL_DATA_DIR: ${WORKFLOW_LOCAL_DATA_DIR:-/app/.workflow-data} WORKFLOW_LOCAL_QUEUE_CONCURRENCY: ${WORKFLOW_LOCAL_QUEUE_CONCURRENCY:-100} volumes: - fiscal_sqlite_data:/app/data healthcheck: test: ["CMD-SHELL", "wget -q --spider http://127.0.0.1:3000/api/health || exit 1"] interval: 30s timeout: 10s retries: 3 expose: - "3000" volumes: fiscal_sqlite_data: workflow_postgres_data: