services: postgres: image: postgres:16-alpine restart: unless-stopped environment: POSTGRES_USER: openagents POSTGRES_PASSWORD: openagents POSTGRES_DB: openagents volumes: - postgres-data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U openagents -d openagents"] interval: 5s timeout: 5s retries: 20 web: build: context: . dockerfile: Dockerfile command: [ "sh", "-c", "bun run --cwd apps/web db:migrate:apply && bun run --cwd apps/web start", ] restart: unless-stopped depends_on: postgres: condition: service_healthy ports: - "127.0.0.1:3000:3000" environment: POSTGRES_URL: postgres://openagents:openagents@postgres:5432/openagents GITHUB_PAT: ${GITHUB_PAT} AI_GATEWAY_BASE_URL: ${AI_GATEWAY_BASE_URL} AI_GATEWAY_API_KEY: ${AI_GATEWAY_API_KEY} AI_MODELS_JSON: ${AI_MODELS_JSON:-} AI_DEFAULT_MODEL_ID: ${AI_DEFAULT_MODEL_ID} SANDBOX_BACKEND: docker GIT_USER_NAME: ${GIT_USER_NAME} GIT_USER_EMAIL: ${GIT_USER_EMAIL} WORKFLOW_WORKER: "0" volumes: - /var/run/docker.sock:/var/run/docker.sock healthcheck: test: [ "CMD", "bun", "-e", "fetch('http://127.0.0.1:3000').then((r)=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))", ] interval: 5s timeout: 5s retries: 24 start_period: 10s workflow-worker: build: context: . dockerfile: Dockerfile restart: unless-stopped depends_on: postgres: condition: service_healthy web: condition: service_healthy command: ["bun", "run", "start:worker"] environment: POSTGRES_URL: postgres://openagents:openagents@postgres:5432/openagents GITHUB_PAT: ${GITHUB_PAT} AI_GATEWAY_BASE_URL: ${AI_GATEWAY_BASE_URL} AI_GATEWAY_API_KEY: ${AI_GATEWAY_API_KEY} AI_MODELS_JSON: ${AI_MODELS_JSON:-} AI_DEFAULT_MODEL_ID: ${AI_DEFAULT_MODEL_ID} SANDBOX_BACKEND: docker GIT_USER_NAME: ${GIT_USER_NAME} GIT_USER_EMAIL: ${GIT_USER_EMAIL} WORKFLOW_WORKER: "1" volumes: - /var/run/docker.sock:/var/run/docker.sock volumes: postgres-data: