services: postgres: image: postgres:17-alpine container_name: clawly-work-postgres ports: - "0.0.0.0:5432:5432" environment: POSTGRES_USER: clawly_work POSTGRES_PASSWORD: clawly_work POSTGRES_DB: clawly_work volumes: - pgdata:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U clawly_work"] interval: 5s timeout: 3s retries: 10 minio: image: minio/minio:latest container_name: clawly-work-minio ports: - "0.0.0.0:9000:9000" - "0.0.0.0:9001:9001" environment: MINIO_ROOT_USER: clawly_work MINIO_ROOT_PASSWORD: clawly_work volumes: - minio_data:/data command: server /data --console-address ":9001" healthcheck: test: ["CMD", "mc", "ready", "local"] interval: 5s timeout: 3s retries: 10 minio-init: image: minio/mc:latest container_name: clawly-work-minio-init depends_on: minio: condition: service_healthy restart: "no" entrypoint: > sh -c " mc alias set local http://minio:9000 clawly_work clawly_work && mc mb --ignore-existing local/uploads && echo 'Bucket uploads ready' " temporal: image: temporalio/auto-setup:latest container_name: clawly-work-temporal depends_on: postgres: condition: service_healthy ports: - "0.0.0.0:7233:7233" environment: DB: postgres12 DB_PORT: 5432 POSTGRES_USER: clawly_work POSTGRES_PWD: clawly_work POSTGRES_SEEDS: postgres TEMPORAL_NAMESPACE: clawly-work healthcheck: test: ["CMD-SHELL", "nc -z $(hostname -i) 7233"] interval: 5s timeout: 3s retries: 30 start_period: 30s temporal-init: image: temporalio/admin-tools:latest container_name: clawly-work-temporal-init depends_on: temporal: condition: service_healthy restart: "no" entrypoint: > sh -c " temporal operator namespace create -n clawly-work --address temporal:7233 2>/dev/null; echo 'Namespace clawly-work ready' " temporal-ui: image: temporalio/ui:latest container_name: clawly-work-temporal-ui depends_on: temporal: condition: service_healthy ports: - "0.0.0.0:8080:8080" environment: TEMPORAL_ADDRESS: temporal:7233 TEMPORAL_CORS_ORIGINS: http://localhost:3000 ui: build: context: . dockerfile: packages/ui/Dockerfile container_name: clawly-work-ui depends_on: postgres: condition: service_healthy temporal: condition: service_healthy ports: - "0.0.0.0:3000:3000" env_file: .env environment: DATABASE_URL: postgresql://clawly_work:clawly_work@postgres:5432/clawly_work S3_ENDPOINT: http://minio:9000 S3_PUBLIC_ENDPOINT: ${S3_PUBLIC_ENDPOINT:-http://localhost:9000} TEMPORAL_ADDRESS: temporal:7233 profiles: [app] agent: build: context: . dockerfile: packages/agent/Dockerfile container_name: clawly-work-agent depends_on: postgres: condition: service_healthy temporal: condition: service_healthy env_file: .env environment: DATABASE_URL: postgresql://clawly_work:clawly_work@postgres:5432/clawly_work S3_ENDPOINT: http://minio:9000 TEMPORAL_ADDRESS: temporal:7233 profiles: [app] db-push: build: context: . dockerfile: packages/db/Dockerfile container_name: clawly-work-db-push depends_on: postgres: condition: service_healthy environment: DATABASE_URL: postgresql://clawly_work:clawly_work@postgres:5432/clawly_work profiles: [app] volumes: pgdata: minio_data: