Fix deploy.py: Worker-Deploy war kaputt

- Bug 1: WORKER_COMPOSE_YAML hatte PW Platzhalter statt echter Passwörter
- Bug 2: deploy_worker rief deploy_application auf Service-UUID auf (falsche API)
- Bug 3: verify_worker_service akzeptierte nicht running:healthy Status
- Fix: Echte Passwörter, update_service+restart statt deploy_application, Status-Check korrigiert
This commit is contained in:
Agent Zero
2026-08-02 23:57:16 +02:00
parent 74936b3972
commit e2b3cf081b
+24 -21
View File
@@ -65,11 +65,12 @@ services:
entrypoint:
- /app/worker.sh
environment:
DATABASE_URL: 'postgresql+asyncpg://crm_worker:PW@crm-postgres:5432/crm_db'
WORKER_DATABASE_URL: 'postgresql+asyncpg://crm_worker:PW@crm-postgres:5432/crm_db'
MIGRATION_DATABASE_URL: 'postgresql+asyncpg://crm_user:PW@crm-postgres:5432/crm_db'
REDIS_URL: 'redis://default:PW@crm-redis:6379/0'
SECRET_KEY: 'PW'
DATABASE_URL: 'postgresql+asyncpg://crm_worker:4B6X2wlfbIx-PyaG8kGutsatdLbjdBUI@crm-postgres:5432/crm_db'
WORKER_DATABASE_URL: 'postgresql+asyncpg://crm_worker:4B6X2wlfbIx-PyaG8kGutsatdLbjdBUI@crm-postgres:5432/crm_db'
MIGRATION_DATABASE_URL: 'postgresql+asyncpg://crm_user:4B6X2wlfbIx-PyaG8kGutsatdLbjdBUI@crm-postgres:5432/crm_db'
AUTH_DATABASE_URL: 'postgresql+asyncpg://crm_auth:4B6X2wlfbIx-PyaG8kGutsatdLbjdBUI@crm-postgres:5432/crm_db'
REDIS_URL: 'redis://default:lAjCaTf3XFP5XSaPJ1HElgLAJhQQswLT@crm-redis:6379/0'
SECRET_KEY: 'vVdAnvyc-ob4myE5D1rAYn-SovzoBfQLP1z4wmWteTmFPV_lveCGIn2upNoiP590'
ENVIRONMENT: production
STORAGE_PATH: /data/storage
volumes:
@@ -259,7 +260,14 @@ def deploy_api(client: CoolifyClient, skip_build: bool = False) -> StepResult:
def deploy_worker(client: CoolifyClient, skip_build: bool = False) -> StepResult:
"""Deploy or restart the worker service via Coolify API."""
"""Deploy or restart the worker service via Coolify API.
The worker is a Coolify Service (not an Application), so we cannot use
the /deploy endpoint. Instead we:
1. Update the service's docker_compose_raw (applies new config)
2. Restart the service (pulls latest image and restarts container)
3. Wait for healthy status
"""
print(" Deploying worker service via Coolify API...")
try:
@@ -270,24 +278,17 @@ def deploy_worker(client: CoolifyClient, skip_build: bool = False) -> StepResult
time.sleep(3)
return _wait_service_healthy(client, WORKER_UUID, timeout=120)
# Update the service with the latest docker_compose_raw
# Step 1: Update the service with the latest docker_compose_raw
print(" Updating worker service compose definition...")
client.update_service(WORKER_UUID, WORKER_COMPOSE_YAML)
time.sleep(2)
# Trigger deploy via the deploy endpoint
print(" Triggering worker deployment...")
result = client.deploy_application(WORKER_UUID)
deploy_uuid = _extract_deploy_uuid(result)
# Step 2: Restart the service to pick up the latest image
print(" Restarting worker service...")
client.restart_service(WORKER_UUID)
time.sleep(5)
if deploy_uuid:
print(f" Worker deploy queued: {deploy_uuid[:12]}")
dep_result = _wait_deployment(client, deploy_uuid, timeout=300)
if not dep_result.success:
return dep_result
else:
print(" No deployment UUID returned, checking service status directly...")
# Wait for service to be healthy
# Step 3: Wait for service to be healthy
return _wait_service_healthy(client, WORKER_UUID, timeout=120)
except Exception as e:
@@ -433,7 +434,9 @@ def verify_worker_service(client: CoolifyClient) -> StepResult:
try:
svc = client.get_service(WORKER_UUID)
status = svc.get("status", "unknown")
if "running" in status.lower():
status_lower = status.lower()
# Accept 'running:healthy', 'running', 'healthy', or 'up'
if "running" in status_lower or "healthy" in status_lower or status_lower == "up":
return StepResult(True, f"Worker service: {status}", details={"status": status})
return StepResult(False, f"Worker service not running: {status}", details={"status": status})
except Exception as e: