diff --git a/scripts/deploy.py b/scripts/deploy.py index c3f4d21..71247b5 100644 --- a/scripts/deploy.py +++ b/scripts/deploy.py @@ -1180,24 +1180,8 @@ def deploy_initial() -> int: steps.append(("Set envs", StepResult(False, str(e)))) _print_result(steps[-1][1]) - # Step 4: Set domain via docker_compose_domains + Deploy - print("\n[4/4] Setting domain and deploying...") - if APP_DOMAIN: - try: - resp = httpx.patch( - f"{client.base_url}/api/v1/applications/{app_uuid}", - headers=client.headers, - json={ - "docker_compose_domains": [ - {"name": "crm_app", "domain": f"{APP_DOMAIN}:443"} - ] - }, - timeout=30, - ) - print(f" Domain set: {APP_DOMAIN}:443 ({resp.status_code})") - except Exception as e: - print(f" Warning: could not set domain: {e}") - + # Step 4: First Deploy (without domain — Coolify needs to read docker-compose.yaml first) + print("\n[4/5] Deploying docker-compose stack (first deploy)...") try: resp = httpx.post( f"{client.base_url}/api/v1/deploy", @@ -1224,6 +1208,47 @@ def deploy_initial() -> int: print_summary(steps) return 1 + # Step 5: Set domain via docker_compose_domains (after first deploy, then redeploy) + print("\n[5/5] Setting domain and redeploying...") + if APP_DOMAIN: + try: + resp = httpx.patch( + f"{client.base_url}/api/v1/applications/{app_uuid}", + headers=client.headers, + json={ + "docker_compose_domains": [ + {"name": "crm_app", "domain": APP_DOMAIN} + ] + }, + timeout=30, + ) + print(f" Domain set: {APP_DOMAIN} ({resp.status_code})") + # Redeploy with domain labels + time.sleep(5) + resp2 = httpx.post( + f"{client.base_url}/api/v1/deploy", + headers=client.headers, + json={"uuid": app_uuid}, + timeout=30, + ) + if resp2.status_code == 200: + deploy_data = resp2.json() + deployments = deploy_data.get("deployments", []) + if deployments: + deploy_uuid = deployments[0].get("deployment_uuid", "") + print(f" Redeploy queued: {deploy_uuid[:12]}") + r = _wait_deployment(client, deploy_uuid, timeout=600) + else: + r = StepResult(True, "Redeploy triggered (no UUID)") + else: + r = StepResult(False, f"Redeploy failed: {resp2.status_code}") + except Exception as e: + r = StepResult(False, f"Domain/Redeploy failed: {e}") + else: + r = StepResult(True, "No domain set (APP_DOMAIN not configured)") + steps.append(("Set domain + redeploy", r)) + _print_result(r) + # Verification print("\n[5/5] Running verification...") verify_results = run_verification(client, worker_uuid=None)