From 351f6f4d1620af8444afcbabe32fd3c4528baf52 Mon Sep 17 00:00:00 2001 From: Leendert de Borst Date: Fri, 3 Jan 2025 23:55:51 +0100 Subject: [PATCH 1/4] Update install.sh (#516) --- install.sh | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/install.sh b/install.sh index d1cdc325f..df10baac4 100755 --- a/install.sh +++ b/install.sh @@ -511,8 +511,9 @@ generate_admin_password() { printf "${CYAN}> Generating admin password...${NC}\n" PASSWORD=$(openssl rand -base64 12) - if ! docker pull ${GITHUB_CONTAINER_REGISTRY}-installcli:latest > /dev/null 2>&1; then - printf "${YELLOW}> Pre-built image not found, building locally...${NC}" + # Build locally if in build mode or if pre-built image is not available + if grep -q "^DEPLOYMENT_MODE=build" "$ENV_FILE" 2>/dev/null || ! docker pull ${GITHUB_CONTAINER_REGISTRY}-installcli:latest > /dev/null 2>&1; then + printf "${CYAN}> Building InstallCli locally...${NC}" if [ "$VERBOSE" = true ]; then docker build -t installcli -f src/Utilities/AliasVault.InstallCli/Dockerfile . else @@ -533,23 +534,18 @@ generate_admin_password() { ) fi HASH=$(docker run --rm installcli hash-password "$PASSWORD") - if [ -z "$HASH" ]; then - printf "${RED}> Error: Failed to generate password hash${NC}\n" - exit 1 - fi else HASH=$(docker run --rm ${GITHUB_CONTAINER_REGISTRY}-installcli:latest hash-password "$PASSWORD") - if [ -z "$HASH" ]; then - printf "${RED}> Error: Failed to generate password hash${NC}\n" - exit 1 - fi fi - if [ -n "$HASH" ]; then - update_env_var "ADMIN_PASSWORD_HASH" "$HASH" - update_env_var "ADMIN_PASSWORD_GENERATED" "$(date -u +"%Y-%m-%dT%H:%M:%SZ")" - printf " ==> New admin password: $PASSWORD\n" + if [ -z "$HASH" ]; then + printf "${RED}> Error: Failed to generate password hash${NC}\n" + exit 1 fi + + update_env_var "ADMIN_PASSWORD_HASH" "$HASH" + update_env_var "ADMIN_PASSWORD_GENERATED" "$(date -u +"%Y-%m-%dT%H:%M:%SZ")" + printf " ==> New admin password: $PASSWORD\n" } # Function to set default ports From 9107dfa789b130ee9dd786b70257b3c4fb010c35 Mon Sep 17 00:00:00 2001 From: Leendert de Borst Date: Sat, 4 Jan 2025 00:01:45 +0100 Subject: [PATCH 2/4] Update Docker images to also build for linux/arm64 (#516) --- .github/workflows/publish-docker-images.yml | 14 ++++++++++++++ src/AliasVault.Admin/Dockerfile | 7 ++++--- src/AliasVault.Api/Dockerfile | 18 +++++++++--------- src/AliasVault.Client/Dockerfile | 11 ++++++----- src/Services/AliasVault.SmtpService/Dockerfile | 7 ++++--- src/Services/AliasVault.TaskRunner/Dockerfile | 12 +++++------- src/Utilities/AliasVault.InstallCli/Dockerfile | 7 ++++--- 7 files changed, 46 insertions(+), 30 deletions(-) diff --git a/.github/workflows/publish-docker-images.yml b/.github/workflows/publish-docker-images.yml index 4dee4a89a..3bfe9a395 100644 --- a/.github/workflows/publish-docker-images.yml +++ b/.github/workflows/publish-docker-images.yml @@ -21,6 +21,12 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Convert repository name to lowercase run: | echo "REPO_LOWER=${GITHUB_REPOSITORY,,}" >>${GITHUB_ENV} @@ -43,6 +49,7 @@ jobs: with: context: . file: src/Databases/AliasServerDb/Dockerfile + platforms: linux/amd64,linux/arm64/v8 push: true tags: ${{ env.REGISTRY }}/${{ env.REPO_LOWER }}-postgres:latest,${{ env.REGISTRY }}/${{ env.REPO_LOWER }}-postgres:${{ github.ref_name }} @@ -51,6 +58,7 @@ jobs: with: context: . file: src/AliasVault.Api/Dockerfile + platforms: linux/amd64,linux/arm64/v8 push: true tags: ${{ env.REGISTRY }}/${{ env.REPO_LOWER }}-api:latest,${{ env.REGISTRY }}/${{ env.REPO_LOWER }}-api:${{ github.ref_name }} @@ -59,6 +67,7 @@ jobs: with: context: . file: src/AliasVault.Client/Dockerfile + platforms: linux/amd64,linux/arm64/v8 push: true tags: ${{ env.REGISTRY }}/${{ env.REPO_LOWER }}-client:latest,${{ env.REGISTRY }}/${{ env.REPO_LOWER }}-client:${{ github.ref_name }} @@ -67,6 +76,7 @@ jobs: with: context: . file: src/AliasVault.Admin/Dockerfile + platforms: linux/amd64,linux/arm64/v8 push: true tags: ${{ env.REGISTRY }}/${{ env.REPO_LOWER }}-admin:latest,${{ env.REGISTRY }}/${{ env.REPO_LOWER }}-admin:${{ github.ref_name }} @@ -75,6 +85,7 @@ jobs: with: context: . file: Dockerfile + platforms: linux/amd64,linux/arm64/v8 push: true tags: ${{ env.REGISTRY }}/${{ env.REPO_LOWER }}-reverse-proxy:latest,${{ env.REGISTRY }}/${{ env.REPO_LOWER }}-reverse-proxy:${{ github.ref_name }} @@ -83,6 +94,7 @@ jobs: with: context: . file: src/Services/AliasVault.SmtpService/Dockerfile + platforms: linux/amd64,linux/arm64/v8 push: true tags: ${{ env.REGISTRY }}/${{ env.REPO_LOWER }}-smtp:latest,${{ env.REGISTRY }}/${{ env.REPO_LOWER }}-smtp:${{ github.ref_name }} @@ -91,6 +103,7 @@ jobs: with: context: . file: src/Services/AliasVault.TaskRunner/Dockerfile + platforms: linux/amd64,linux/arm64/v8 push: true tags: ${{ env.REGISTRY }}/${{ env.REPO_LOWER }}-task-runner:latest,${{ env.REGISTRY }}/${{ env.REPO_LOWER }}-task-runner:${{ github.ref_name }} @@ -99,5 +112,6 @@ jobs: with: context: . file: src/Utilities/AliasVault.InstallCli/Dockerfile + platforms: linux/amd64,linux/arm64/v8 push: true tags: ${{ env.REGISTRY }}/${{ env.REPO_LOWER }}-installcli:latest,${{ env.REGISTRY }}/${{ env.REPO_LOWER }}-installcli:${{ github.ref_name }} diff --git a/src/AliasVault.Admin/Dockerfile b/src/AliasVault.Admin/Dockerfile index 089b90161..843ab49a8 100644 --- a/src/AliasVault.Admin/Dockerfile +++ b/src/AliasVault.Admin/Dockerfile @@ -2,15 +2,16 @@ WORKDIR /app EXPOSE 3002 -FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build +FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:9.0 AS build +ARG TARGETARCH ARG BUILD_CONFIGURATION=Release WORKDIR /src COPY ["src/AliasVault.Admin/AliasVault.Admin.csproj", "src/AliasVault.Admin/"] -RUN dotnet restore "src/AliasVault.Admin/AliasVault.Admin.csproj" +RUN dotnet restore "src/AliasVault.Admin/AliasVault.Admin.csproj" -a $TARGETARCH COPY . . WORKDIR "/src/src/AliasVault.Admin" -RUN dotnet publish "AliasVault.Admin.csproj" -c "$BUILD_CONFIGURATION" -o /app/publish /p:UseAppHost=false +RUN dotnet publish "AliasVault.Admin.csproj" -c "$BUILD_CONFIGURATION" -a $TARGETARCH -o /app/publish /p:UseAppHost=false FROM base AS final WORKDIR /app diff --git a/src/AliasVault.Api/Dockerfile b/src/AliasVault.Api/Dockerfile index ddf6764da..12f82d5de 100644 --- a/src/AliasVault.Api/Dockerfile +++ b/src/AliasVault.Api/Dockerfile @@ -1,19 +1,19 @@ -FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS base -WORKDIR /app -EXPOSE 3001 - -FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build +FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:9.0 AS build +ARG TARGETARCH ARG BUILD_CONFIGURATION=Release - WORKDIR /src + +# Copy the project files and restore dependencies COPY ["src/AliasVault.Api/AliasVault.Api.csproj", "src/AliasVault.Api/"] -RUN dotnet restore "src/AliasVault.Api/AliasVault.Api.csproj" +RUN dotnet restore "src/AliasVault.Api/AliasVault.Api.csproj" -a $TARGETARCH COPY . . +# Build and publish WORKDIR "/src/src/AliasVault.Api" -RUN dotnet publish "AliasVault.Api.csproj" -c "$BUILD_CONFIGURATION" -o /app/publish /p:UseAppHost=false +RUN dotnet publish "AliasVault.Api.csproj" -c "$BUILD_CONFIGURATION" -a $TARGETARCH -o /app/publish /p:UseAppHost=false -FROM base AS final +# Final stage +FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS final WORKDIR /app COPY --from=build /app/publish . diff --git a/src/AliasVault.Client/Dockerfile b/src/AliasVault.Client/Dockerfile index 2ea28ab8b..0e6f5c737 100644 --- a/src/AliasVault.Client/Dockerfile +++ b/src/AliasVault.Client/Dockerfile @@ -1,7 +1,8 @@ FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS base WORKDIR /app -FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build +FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:9.0 AS build +ARG TARGETARCH ARG BUILD_CONFIGURATION=Release ENV DOTNET_CLI_TELEMETRY_OPTOUT=1 ENV MSBUILDDEBUGPATH=/src/msbuild-logs @@ -12,26 +13,26 @@ RUN mkdir -p /src/msbuild-logs # Install Python which is required by the WebAssembly tools RUN apt-get update && apt-get install -y python3 && apt-get clean -# Create the debug directory and install Python which is required by the WebAssembly tools -RUN mkdir -p /src/msbuild-logs && apt-get update && apt-get install -y python3 && apt-get clean # Install the WebAssembly tools RUN dotnet workload install wasm-tools # Copy the project files and restore dependencies COPY ["src/AliasVault.Client/AliasVault.Client.csproj", "src/AliasVault.Client/"] -RUN dotnet restore "src/AliasVault.Client/AliasVault.Client.csproj" +RUN dotnet restore "src/AliasVault.Client/AliasVault.Client.csproj" -a $TARGETARCH COPY . . # Build the Client project WORKDIR "/src/src/AliasVault.Client" -RUN dotnet build "AliasVault.Client.csproj" -c "$BUILD_CONFIGURATION" -o /app/build +RUN dotnet build "AliasVault.Client.csproj" -c "$BUILD_CONFIGURATION" -o /app/build -a $TARGETARCH # Publish the Client project FROM build AS publish ARG BUILD_CONFIGURATION=Release +ARG TARGETARCH RUN dotnet publish "AliasVault.Client.csproj" \ -c "$BUILD_CONFIGURATION" \ + -a $TARGETARCH \ --no-restore \ -o /app/publish \ /p:UseAppHost=false \ diff --git a/src/Services/AliasVault.SmtpService/Dockerfile b/src/Services/AliasVault.SmtpService/Dockerfile index cf7bb0574..d288d2742 100644 --- a/src/Services/AliasVault.SmtpService/Dockerfile +++ b/src/Services/AliasVault.SmtpService/Dockerfile @@ -1,18 +1,19 @@ FROM mcr.microsoft.com/dotnet/runtime:9.0 AS base WORKDIR /app -FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build +FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:9.0 AS build +ARG TARGETARCH ARG BUILD_CONFIGURATION=Release WORKDIR /src # Copy the project files and restore dependencies COPY ["src/Services/AliasVault.SmtpService/AliasVault.SmtpService.csproj", "src/Services/AliasVault.SmtpService/"] -RUN dotnet restore "./src/Services/AliasVault.SmtpService/AliasVault.SmtpService.csproj" +RUN dotnet restore "./src/Services/AliasVault.SmtpService/AliasVault.SmtpService.csproj" -a $TARGETARCH COPY . . # Build and publish the application WORKDIR "/src/src/Services/AliasVault.SmtpService" -RUN dotnet publish "./AliasVault.SmtpService.csproj" -c "$BUILD_CONFIGURATION" -o /app/publish /p:UseAppHost=false +RUN dotnet publish "./AliasVault.SmtpService.csproj" -c "$BUILD_CONFIGURATION" -a $TARGETARCH -o /app/publish /p:UseAppHost=false FROM base AS final WORKDIR /app diff --git a/src/Services/AliasVault.TaskRunner/Dockerfile b/src/Services/AliasVault.TaskRunner/Dockerfile index 69da58156..0c9723449 100644 --- a/src/Services/AliasVault.TaskRunner/Dockerfile +++ b/src/Services/AliasVault.TaskRunner/Dockerfile @@ -1,20 +1,18 @@ -FROM mcr.microsoft.com/dotnet/runtime:9.0 AS base -WORKDIR /app - -FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build +FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:9.0 AS build +ARG TARGETARCH ARG BUILD_CONFIGURATION=Release WORKDIR /src # Copy the project files and restore dependencies COPY ["src/Services/AliasVault.TaskRunner/AliasVault.TaskRunner.csproj", "src/Services/AliasVault.TaskRunner/"] -RUN dotnet restore "./src/Services/AliasVault.TaskRunner/AliasVault.TaskRunner.csproj" +RUN dotnet restore "./src/Services/AliasVault.TaskRunner/AliasVault.TaskRunner.csproj" -a $TARGETARCH COPY . . # Build and publish the application WORKDIR "/src/src/Services/AliasVault.TaskRunner" -RUN dotnet publish "./AliasVault.TaskRunner.csproj" -c "$BUILD_CONFIGURATION" -o /app/publish /p:UseAppHost=false +RUN dotnet publish "./AliasVault.TaskRunner.csproj" -c "$BUILD_CONFIGURATION" -a $TARGETARCH -o /app/publish /p:UseAppHost=false -FROM base AS final +FROM mcr.microsoft.com/dotnet/runtime:9.0 AS final WORKDIR /app COPY --from=build /app/publish . ENTRYPOINT ["dotnet", "AliasVault.TaskRunner.dll"] diff --git a/src/Utilities/AliasVault.InstallCli/Dockerfile b/src/Utilities/AliasVault.InstallCli/Dockerfile index 927828957..4b361209c 100644 --- a/src/Utilities/AliasVault.InstallCli/Dockerfile +++ b/src/Utilities/AliasVault.InstallCli/Dockerfile @@ -1,21 +1,22 @@ FROM mcr.microsoft.com/dotnet/runtime:9.0 AS base WORKDIR /app -FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build +FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:9.0 AS build +ARG TARGETARCH ARG BUILD_CONFIGURATION=Release WORKDIR /src # Copy csproj files and restore as distinct layers COPY ["src/Utilities/AliasVault.InstallCli/AliasVault.InstallCli.csproj", "src/Utilities/AliasVault.InstallCli/"] COPY ["src/Databases/AliasServerDb/AliasServerDb.csproj", "src/Databases/AliasServerDb/"] -RUN dotnet restore "src/Utilities/AliasVault.InstallCli/AliasVault.InstallCli.csproj" +RUN dotnet restore "src/Utilities/AliasVault.InstallCli/AliasVault.InstallCli.csproj" -a $TARGETARCH # Copy the entire source code COPY . . # Build and publish in one step RUN dotnet publish "src/Utilities/AliasVault.InstallCli/AliasVault.InstallCli.csproj" \ - -c "$BUILD_CONFIGURATION" -o /app/publish /p:UseAppHost=false + -c "$BUILD_CONFIGURATION" -a $TARGETARCH -o /app/publish /p:UseAppHost=false FROM base AS final WORKDIR /app From d08bec9df7df177068f258b809082693eed1385f Mon Sep 17 00:00:00 2001 From: Leendert de Borst Date: Sat, 4 Jan 2025 01:31:07 +0100 Subject: [PATCH 3/4] Bump version to 0.10.3 (#516) --- install.sh | 4 ++-- src/Shared/AliasVault.Shared.Core/AppInfo.cs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/install.sh b/install.sh index df10baac4..3104938ea 100755 --- a/install.sh +++ b/install.sh @@ -1,5 +1,5 @@ #!/bin/bash -# @version 0.10.1 +# @version 0.10.3 # Repository information used for downloading files and images from GitHub REPO_OWNER="lanedirt" @@ -1751,7 +1751,7 @@ handle_migrate_db() { printf "${CYAN}> Stopping services to ensure database is not in use...${NC}\n" docker compose stop api admin task-runner smtp - if ! docker pull ${GITHUB_CONTAINER_REGISTRY}-installcli:0.10.0 > /dev/null 2>&1; then + if ! docker pull ${GITHUB_CONTAINER_REGISTRY}-installcli:0.10.3 > /dev/null 2>&1; then printf "${YELLOW}> Pre-built image not found, building locally...${NC}" if [ "$VERBOSE" = true ]; then docker build -t installcli -f src/Utilities/AliasVault.InstallCli/Dockerfile . diff --git a/src/Shared/AliasVault.Shared.Core/AppInfo.cs b/src/Shared/AliasVault.Shared.Core/AppInfo.cs index 86a4a0425..2ec1a6d7b 100644 --- a/src/Shared/AliasVault.Shared.Core/AppInfo.cs +++ b/src/Shared/AliasVault.Shared.Core/AppInfo.cs @@ -30,7 +30,7 @@ public static class AppInfo /// /// Gets the patch version number. /// - public const int VersionPatch = 2; + public const int VersionPatch = 3; /// /// Gets the build number, typically used in CI/CD pipelines. From 14898c0c839d7b5b2b52df1fc4ba6d9d5484e6e3 Mon Sep 17 00:00:00 2001 From: Leendert de Borst Date: Sat, 4 Jan 2025 01:38:29 +0100 Subject: [PATCH 4/4] Refactor Dockerfile for readability (#516) --- src/AliasVault.Admin/Dockerfile | 7 +++++-- src/AliasVault.Api/Dockerfile | 7 +++++-- src/AliasVault.Client/Dockerfile | 9 ++++++--- src/Services/AliasVault.SmtpService/Dockerfile | 7 +++++-- src/Services/AliasVault.TaskRunner/Dockerfile | 8 ++++++-- src/Utilities/AliasVault.InstallCli/Dockerfile | 7 +++++-- 6 files changed, 32 insertions(+), 13 deletions(-) diff --git a/src/AliasVault.Admin/Dockerfile b/src/AliasVault.Admin/Dockerfile index 843ab49a8..f865e672b 100644 --- a/src/AliasVault.Admin/Dockerfile +++ b/src/AliasVault.Admin/Dockerfile @@ -7,11 +7,14 @@ ARG TARGETARCH ARG BUILD_CONFIGURATION=Release WORKDIR /src COPY ["src/AliasVault.Admin/AliasVault.Admin.csproj", "src/AliasVault.Admin/"] -RUN dotnet restore "src/AliasVault.Admin/AliasVault.Admin.csproj" -a $TARGETARCH +RUN dotnet restore "src/AliasVault.Admin/AliasVault.Admin.csproj" -a "$TARGETARCH" COPY . . WORKDIR "/src/src/AliasVault.Admin" -RUN dotnet publish "AliasVault.Admin.csproj" -c "$BUILD_CONFIGURATION" -a $TARGETARCH -o /app/publish /p:UseAppHost=false +RUN dotnet publish "AliasVault.Admin.csproj" -c "$BUILD_CONFIGURATION" \ + -a "$TARGETARCH" \ + -o /app/publish \ + /p:UseAppHost=false FROM base AS final WORKDIR /app diff --git a/src/AliasVault.Api/Dockerfile b/src/AliasVault.Api/Dockerfile index 12f82d5de..7324f5020 100644 --- a/src/AliasVault.Api/Dockerfile +++ b/src/AliasVault.Api/Dockerfile @@ -5,12 +5,15 @@ WORKDIR /src # Copy the project files and restore dependencies COPY ["src/AliasVault.Api/AliasVault.Api.csproj", "src/AliasVault.Api/"] -RUN dotnet restore "src/AliasVault.Api/AliasVault.Api.csproj" -a $TARGETARCH +RUN dotnet restore "src/AliasVault.Api/AliasVault.Api.csproj" -a "$TARGETARCH" COPY . . # Build and publish WORKDIR "/src/src/AliasVault.Api" -RUN dotnet publish "AliasVault.Api.csproj" -c "$BUILD_CONFIGURATION" -a $TARGETARCH -o /app/publish /p:UseAppHost=false +RUN dotnet publish "AliasVault.Api.csproj" -c "$BUILD_CONFIGURATION" \ + -a "$TARGETARCH" \ + -o /app/publish \ + /p:UseAppHost=false # Final stage FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS final diff --git a/src/AliasVault.Client/Dockerfile b/src/AliasVault.Client/Dockerfile index 0e6f5c737..d689cf1c5 100644 --- a/src/AliasVault.Client/Dockerfile +++ b/src/AliasVault.Client/Dockerfile @@ -19,12 +19,15 @@ RUN dotnet workload install wasm-tools # Copy the project files and restore dependencies COPY ["src/AliasVault.Client/AliasVault.Client.csproj", "src/AliasVault.Client/"] -RUN dotnet restore "src/AliasVault.Client/AliasVault.Client.csproj" -a $TARGETARCH +RUN dotnet restore "src/AliasVault.Client/AliasVault.Client.csproj" -a "$TARGETARCH" COPY . . # Build the Client project WORKDIR "/src/src/AliasVault.Client" -RUN dotnet build "AliasVault.Client.csproj" -c "$BUILD_CONFIGURATION" -o /app/build -a $TARGETARCH +RUN dotnet build "AliasVault.Client.csproj" \ + -c "$BUILD_CONFIGURATION" \ + -o /app/build \ + -a "$TARGETARCH" # Publish the Client project FROM build AS publish @@ -32,7 +35,7 @@ ARG BUILD_CONFIGURATION=Release ARG TARGETARCH RUN dotnet publish "AliasVault.Client.csproj" \ -c "$BUILD_CONFIGURATION" \ - -a $TARGETARCH \ + -a "$TARGETARCH" \ --no-restore \ -o /app/publish \ /p:UseAppHost=false \ diff --git a/src/Services/AliasVault.SmtpService/Dockerfile b/src/Services/AliasVault.SmtpService/Dockerfile index d288d2742..bca8dcf17 100644 --- a/src/Services/AliasVault.SmtpService/Dockerfile +++ b/src/Services/AliasVault.SmtpService/Dockerfile @@ -8,12 +8,15 @@ WORKDIR /src # Copy the project files and restore dependencies COPY ["src/Services/AliasVault.SmtpService/AliasVault.SmtpService.csproj", "src/Services/AliasVault.SmtpService/"] -RUN dotnet restore "./src/Services/AliasVault.SmtpService/AliasVault.SmtpService.csproj" -a $TARGETARCH +RUN dotnet restore "./src/Services/AliasVault.SmtpService/AliasVault.SmtpService.csproj" -a "$TARGETARCH" COPY . . # Build and publish the application WORKDIR "/src/src/Services/AliasVault.SmtpService" -RUN dotnet publish "./AliasVault.SmtpService.csproj" -c "$BUILD_CONFIGURATION" -a $TARGETARCH -o /app/publish /p:UseAppHost=false +RUN dotnet publish "./AliasVault.SmtpService.csproj" -c "$BUILD_CONFIGURATION" \ + -a "$TARGETARCH" \ + -o /app/publish \ + /p:UseAppHost=false FROM base AS final WORKDIR /app diff --git a/src/Services/AliasVault.TaskRunner/Dockerfile b/src/Services/AliasVault.TaskRunner/Dockerfile index 0c9723449..b23a095a7 100644 --- a/src/Services/AliasVault.TaskRunner/Dockerfile +++ b/src/Services/AliasVault.TaskRunner/Dockerfile @@ -5,12 +5,16 @@ WORKDIR /src # Copy the project files and restore dependencies COPY ["src/Services/AliasVault.TaskRunner/AliasVault.TaskRunner.csproj", "src/Services/AliasVault.TaskRunner/"] -RUN dotnet restore "./src/Services/AliasVault.TaskRunner/AliasVault.TaskRunner.csproj" -a $TARGETARCH +RUN dotnet restore "./src/Services/AliasVault.TaskRunner/AliasVault.TaskRunner.csproj" -a "$TARGETARCH" COPY . . # Build and publish the application WORKDIR "/src/src/Services/AliasVault.TaskRunner" -RUN dotnet publish "./AliasVault.TaskRunner.csproj" -c "$BUILD_CONFIGURATION" -a $TARGETARCH -o /app/publish /p:UseAppHost=false +RUN dotnet publish "./AliasVault.TaskRunner.csproj" \ + -c "$BUILD_CONFIGURATION" \ + -a "$TARGETARCH" \ + -o /app/publish \ + /p:UseAppHost=false FROM mcr.microsoft.com/dotnet/runtime:9.0 AS final WORKDIR /app diff --git a/src/Utilities/AliasVault.InstallCli/Dockerfile b/src/Utilities/AliasVault.InstallCli/Dockerfile index 4b361209c..9e1d9e6a9 100644 --- a/src/Utilities/AliasVault.InstallCli/Dockerfile +++ b/src/Utilities/AliasVault.InstallCli/Dockerfile @@ -9,14 +9,17 @@ WORKDIR /src # Copy csproj files and restore as distinct layers COPY ["src/Utilities/AliasVault.InstallCli/AliasVault.InstallCli.csproj", "src/Utilities/AliasVault.InstallCli/"] COPY ["src/Databases/AliasServerDb/AliasServerDb.csproj", "src/Databases/AliasServerDb/"] -RUN dotnet restore "src/Utilities/AliasVault.InstallCli/AliasVault.InstallCli.csproj" -a $TARGETARCH +RUN dotnet restore "src/Utilities/AliasVault.InstallCli/AliasVault.InstallCli.csproj" -a "$TARGETARCH" # Copy the entire source code COPY . . # Build and publish in one step RUN dotnet publish "src/Utilities/AliasVault.InstallCli/AliasVault.InstallCli.csproj" \ - -c "$BUILD_CONFIGURATION" -a $TARGETARCH -o /app/publish /p:UseAppHost=false + -c "$BUILD_CONFIGURATION" \ + -a "$TARGETARCH" \ + -o /app/publish \ + /p:UseAppHost=false FROM base AS final WORKDIR /app