From d629ffb6e54d9f2bbd598ea77b5823ea63cbc33e Mon Sep 17 00:00:00 2001 From: Leendert de Borst Date: Fri, 5 Sep 2025 17:49:37 +0200 Subject: [PATCH] Update all-in-one build to prevent lock contention (#1181) --- dockerfiles/all-in-one/Dockerfile | 43 +++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/dockerfiles/all-in-one/Dockerfile b/dockerfiles/all-in-one/Dockerfile index 473f394b2..ff6845906 100644 --- a/dockerfiles/all-in-one/Dockerfile +++ b/dockerfiles/all-in-one/Dockerfile @@ -18,24 +18,39 @@ COPY shared/ ./shared/ # Install required .NET workloads and restore packages once for the entire solution WORKDIR /src/apps/server + +# Install workloads and restore packages once for the entire solution RUN dotnet workload install wasm-tools && \ dotnet restore aliasvault.sln -# Build all applications +# Build each application in separate layers to avoid lock contention + +# Build API RUN dotnet publish AliasVault.Api/AliasVault.Api.csproj \ - -c Release -o /app/api --no-restore && \ - dotnet publish AliasVault.Client/AliasVault.Client.csproj \ - -c Release -o /app/client --no-restore && \ - dotnet publish AliasVault.Admin/AliasVault.Admin.csproj \ - -c Release -o /app/admin --no-restore && \ - dotnet publish Services/AliasVault.SmtpService/AliasVault.SmtpService.csproj \ - -c Release -o /app/smtp --no-restore && \ - dotnet publish Services/AliasVault.TaskRunner/AliasVault.TaskRunner.csproj \ - -c Release -o /app/taskrunner --no-restore && \ - dotnet publish Utilities/AliasVault.InstallCli/AliasVault.InstallCli.csproj \ - -c Release -o /app/installcli --no-restore && \ - # Clean up .NET debug files and unnecessary files - find /app -name "*.pdb" -delete && \ + -c Release -o /app/api --no-restore + +# Build Client (contains WASM which can be slow) +RUN dotnet publish AliasVault.Client/AliasVault.Client.csproj \ + -c Release -o /app/client --no-restore + +# Build Admin +RUN dotnet publish AliasVault.Admin/AliasVault.Admin.csproj \ + -c Release -o /app/admin --no-restore + +# Build SMTP Service +RUN dotnet publish Services/AliasVault.SmtpService/AliasVault.SmtpService.csproj \ + -c Release -o /app/smtp --no-restore + +# Build Task Runner +RUN dotnet publish Services/AliasVault.TaskRunner/AliasVault.TaskRunner.csproj \ + -c Release -o /app/taskrunner --no-restore + +# Build Install CLI +RUN dotnet publish Utilities/AliasVault.InstallCli/AliasVault.InstallCli.csproj \ + -c Release -o /app/installcli --no-restore + +# Clean up .NET debug files and unnecessary files +RUN find /app -name "*.pdb" -delete && \ find /app -name "*.xml" -not -name "*.deps.json" -delete && \ find /app -name "*.Development.json" -delete && \ find /app -name "web.config" -delete