diff --git a/src/.dockerignore b/.dockerignore similarity index 85% rename from src/.dockerignore rename to .dockerignore index 512cd18..2db3fe7 100644 --- a/src/.dockerignore +++ b/.dockerignore @@ -10,4 +10,4 @@ **/Dockerfile* **/obj .env* -**/appsettings*.json \ No newline at end of file +**/appsettings*.json diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 054fc12..bdaf097 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -6,6 +6,7 @@ on: - main paths: - 'src/**' + - '.editorconfig' jobs: build: name: Build Docker Images @@ -26,10 +27,10 @@ jobs: - name: Build Docker image run: | WORKER_TAG=${{ secrets.DOCKERHUB_USERNAME }}/steves-bot:worker-${{ steps.version.outputs.version }} - docker build -f src/StevesBot.Worker.Dockerfile -t $WORKER_TAG src + docker build -f src/StevesBot.Worker.Dockerfile -t $WORKER_TAG . docker push $WORKER_TAG WEBHOOK_TAG=${{ secrets.DOCKERHUB_USERNAME }}/steves-bot:webhook-${{ steps.version.outputs.version }} - docker build -f src/StevesBot.Webhook.Dockerfile -t $WEBHOOK_TAG src + docker build -f src/StevesBot.Webhook.Dockerfile -t $WEBHOOK_TAG . docker push $WEBHOOK_TAG deploy: name: Deploy Docker Images diff --git a/README.md b/README.md index 0e88106..2ebf04a 100644 --- a/README.md +++ b/README.md @@ -234,6 +234,13 @@ FROM mcr.microsoft.com/dotnet/aspnet:10.0 # ... runtime setup ... ``` +Images are built with the **repository root** as Docker build context so solution-wide configuration (including root-level analyzer/editorconfig rules) is available during build: + +```bash +docker build -f src/StevesBot.Worker.Dockerfile -t steves-bot:worker . +docker build -f src/StevesBot.Webhook.Dockerfile -t steves-bot:webhook . +``` + ### Configuration for Production Use environment variables or configuration providers for production secrets. diff --git a/src/StevesBot.Webhook.Dockerfile b/src/StevesBot.Webhook.Dockerfile index 13715b3..b4e1791 100644 --- a/src/StevesBot.Webhook.Dockerfile +++ b/src/StevesBot.Webhook.Dockerfile @@ -2,32 +2,29 @@ FROM mcr.microsoft.com/dotnet/sdk:10.0 AS base WORKDIR /app # solution level -COPY *.sln ./ -COPY Directory.Build.props ./ +COPY src/StevesBot.sln src/ +COPY src/Directory.Build.props src/ # 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/ +COPY src/src/StevesBot.Library/*.csproj src/src/StevesBot.Library/ +COPY src/src/StevesBot.Worker/*.csproj src/src/StevesBot.Worker/ +COPY src/src/StevesBot.Webhook/*.csproj src/src/StevesBot.Webhook/ +COPY src/src/Directory.Build.props src/src/ +COPY src/src/Directory.Packages.props src/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/tests/StevesBot.Library.Tests/*.csproj src/tests/StevesBot.Library.Tests/ +COPY src/tests/StevesBot.Worker.Tests/*.csproj src/tests/StevesBot.Worker.Tests/ +COPY src/tests/StevesBot.Webhook.Tests/*.csproj src/tests/StevesBot.Webhook.Tests/ +COPY src/tests/Directory.Build.props src/tests/ +COPY src/tests/Directory.Packages.props src/tests/ -COPY ./src/StevesBot.Worker/StevesBot.Worker.csproj ./ -COPY ./Directory.Build.props ./ - -RUN dotnet restore StevesBot.sln +RUN dotnet restore src/StevesBot.sln COPY . . FROM base AS publish-stage -RUN dotnet publish -c Release -o dist src/StevesBot.Webhook/StevesBot.Webhook.csproj +RUN dotnet publish -c Release -o dist src/src/StevesBot.Webhook/StevesBot.Webhook.csproj FROM mcr.microsoft.com/dotnet/aspnet:10.0 WORKDIR /app diff --git a/src/StevesBot.Worker.Dockerfile b/src/StevesBot.Worker.Dockerfile index 83ef455..d5aacfd 100644 --- a/src/StevesBot.Worker.Dockerfile +++ b/src/StevesBot.Worker.Dockerfile @@ -2,32 +2,29 @@ FROM mcr.microsoft.com/dotnet/sdk:10.0 AS base WORKDIR /app # solution level -COPY *.sln ./ -COPY Directory.Build.props ./ +COPY src/StevesBot.sln src/ +COPY src/Directory.Build.props src/ # 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/ +COPY src/src/StevesBot.Library/*.csproj src/src/StevesBot.Library/ +COPY src/src/StevesBot.Worker/*.csproj src/src/StevesBot.Worker/ +COPY src/src/StevesBot.Webhook/*.csproj src/src/StevesBot.Webhook/ +COPY src/src/Directory.Build.props src/src/ +COPY src/src/Directory.Packages.props src/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/tests/StevesBot.Library.Tests/*.csproj src/tests/StevesBot.Library.Tests/ +COPY src/tests/StevesBot.Worker.Tests/*.csproj src/tests/StevesBot.Worker.Tests/ +COPY src/tests/StevesBot.Webhook.Tests/*.csproj src/tests/StevesBot.Webhook.Tests/ +COPY src/tests/Directory.Build.props src/tests/ +COPY src/tests/Directory.Packages.props src/tests/ -COPY ./src/StevesBot.Worker/StevesBot.Worker.csproj ./ -COPY ./Directory.Build.props ./ - -RUN dotnet restore StevesBot.sln +RUN dotnet restore src/StevesBot.sln COPY . . FROM base AS publish-stage -RUN dotnet publish -c Release -o dist src/StevesBot.Worker/StevesBot.Worker.csproj +RUN dotnet publish -c Release -o dist src/src/StevesBot.Worker/StevesBot.Worker.csproj FROM mcr.microsoft.com/dotnet/aspnet:10.0 WORKDIR /app