fix(multi-server): make applications on several servers consistent

- Stop the application on every server, also when one server is not functional.
- Write file mounts on every server of the application, not only on the main server.
- Deploy the exact commit, rollback flag and image tag of the main deployment to the
  additional servers, so a rollback reverts all servers.
- Pull the pushed image on additional servers for inline Dockerfile applications
  instead of building it again on each server.
- Fail multi-server deployments without a Docker image name, also from webhooks and the API.
- Send one deployment notification after all servers finish (parent_deployment_uuid).
- Block persistent volumes on multi-server applications (API, Livewire, SQLite connect)
  and warn in the deployment log for existing applications that have both.
- Remove dead code in push_to_docker_registry().

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Andras Bacsai
2026-09-28 15:38:57 +02:00
co-authored by Claude Opus 5.5
parent 1f0e2f74d0
commit 7bd8baa7f0
19 changed files with 813 additions and 59 deletions
@@ -39,6 +39,7 @@ use OpenApi\Attributes as OA;
'deployment_url' => ['type' => 'string'],
'destination_id' => ['type' => 'string'],
'only_this_server' => ['type' => 'boolean'],
'parent_deployment_uuid' => ['type' => 'string', 'nullable' => true],
'rollback' => ['type' => 'boolean'],
'commit_message' => ['type' => 'string'],
],
@@ -105,6 +106,7 @@ class ApplicationDeploymentQueue extends Model
'deployment_url',
'destination_id',
'only_this_server',
'parent_deployment_uuid',
'rollback',
'commit_message',
'is_api',