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:
+24
-21
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user