From 852f27c7b5daa2fd56192efbb445b70c394493bd Mon Sep 17 00:00:00 2001 From: Stevan Freeborn <65925598+StevanFreeborn@users.noreply.github.com> Date: Tue, 3 Jun 2025 13:35:04 -0500 Subject: [PATCH] chore: rework dockerfiles to account for multi project solution with centralized package+build prop management --- src/Dockerfile | 14 ------------- src/StevesBot.Webhook.Dockerfile | 35 ++++++++++++++++++++++++++++++++ src/StevesBot.Worker.Dockerfile | 35 ++++++++++++++++++++++++++++++++ 3 files changed, 70 insertions(+), 14 deletions(-) delete mode 100644 src/Dockerfile create mode 100644 src/StevesBot.Webhook.Dockerfile create mode 100644 src/StevesBot.Worker.Dockerfile diff --git a/src/Dockerfile b/src/Dockerfile deleted file mode 100644 index 83404cb..0000000 --- a/src/Dockerfile +++ /dev/null @@ -1,14 +0,0 @@ -FROM mcr.microsoft.com/dotnet/sdk:9.0 AS base -WORKDIR /app -COPY ./StevesBot.Worker/StevesBot.Worker.csproj ./ -COPY ./Directory.Build.props ./ -RUN dotnet restore -COPY ./StevesBot.Worker/. ./ - -FROM base AS publish-stage -RUN dotnet publish -c Release -o dist - -FROM mcr.microsoft.com/dotnet/aspnet:9.0 -WORKDIR /app -COPY --from=publish-stage /app/dist ./ -ENTRYPOINT ["dotnet", "StevesBot.Worker.dll"] \ No newline at end of file diff --git a/src/StevesBot.Webhook.Dockerfile b/src/StevesBot.Webhook.Dockerfile new file mode 100644 index 0000000..f9909e1 --- /dev/null +++ b/src/StevesBot.Webhook.Dockerfile @@ -0,0 +1,35 @@ +FROM mcr.microsoft.com/dotnet/sdk:9.0 AS base +WORKDIR /app + +# solution level +COPY *.sln ./ +COPY Directory.Build.props ./ + +# src level +COPY src/StevesBot.Library/*.csproj src/StevesBot.Library/ +COPY src/StevesBot.Worker/*.csproj src/StevesBot.Worker/ +COPY src/StevesBot.Webhook/*.csproj src/StevesBot.Webhook/ +COPY src/Directory.Build.props src/ +COPY src/Directory.Packages.props src/ + +# test level +COPY tests/StevesBot.Library.Tests/*.csproj tests/StevesBot.Library.Tests/ +COPY tests/StevesBot.Worker.Tests/*.csproj tests/StevesBot.Worker.Tests/ +COPY tests/StevesBot.Webhook.Tests/*.csproj tests/StevesBot.Webhook.Tests/ +COPY tests/Directory.Build.props tests/ +COPY tests/Directory.Packages.props tests/ + +COPY ./src/StevesBot.Worker/StevesBot.Worker.csproj ./ +COPY ./Directory.Build.props ./ + +RUN dotnet restore StevesBot.sln + +COPY . . + +FROM base AS publish-stage +RUN dotnet publish -c Release -o dist src/StevesBot.Webhook/StevesBot.Webhook.csproj + +FROM mcr.microsoft.com/dotnet/aspnet:9.0 +WORKDIR /app +COPY --from=publish-stage /app/dist ./ +ENTRYPOINT ["dotnet", "StevesBot.Webhook.dll"] diff --git a/src/StevesBot.Worker.Dockerfile b/src/StevesBot.Worker.Dockerfile new file mode 100644 index 0000000..0a199f3 --- /dev/null +++ b/src/StevesBot.Worker.Dockerfile @@ -0,0 +1,35 @@ +FROM mcr.microsoft.com/dotnet/sdk:9.0 AS base +WORKDIR /app + +# solution level +COPY *.sln ./ +COPY Directory.Build.props ./ + +# src level +COPY src/StevesBot.Library/*.csproj src/StevesBot.Library/ +COPY src/StevesBot.Worker/*.csproj src/StevesBot.Worker/ +COPY src/StevesBot.Webhook/*.csproj src/StevesBot.Webhook/ +COPY src/Directory.Build.props src/ +COPY src/Directory.Packages.props src/ + +# test level +COPY tests/StevesBot.Library.Tests/*.csproj tests/StevesBot.Library.Tests/ +COPY tests/StevesBot.Worker.Tests/*.csproj tests/StevesBot.Worker.Tests/ +COPY tests/StevesBot.Webhook.Tests/*.csproj tests/StevesBot.Webhook.Tests/ +COPY tests/Directory.Build.props tests/ +COPY tests/Directory.Packages.props tests/ + +COPY ./src/StevesBot.Worker/StevesBot.Worker.csproj ./ +COPY ./Directory.Build.props ./ + +RUN dotnet restore StevesBot.sln + +COPY . . + +FROM base AS publish-stage +RUN dotnet publish -c Release -o dist src/StevesBot.Worker/StevesBot.Worker.csproj + +FROM mcr.microsoft.com/dotnet/aspnet:9.0 +WORKDIR /app +COPY --from=publish-stage /app/dist ./ +ENTRYPOINT ["dotnet", "StevesBot.Worker.dll"]