From e1ee0d1b455e73c8121efce9536595abb58984f4 Mon Sep 17 00:00:00 2001 From: Brian Bicknell Date: Sun, 2 Nov 2025 22:34:06 -0500 Subject: [PATCH] Added dockerfile. --- .dockerignore | 14 ++++++++++++++ .gitea/workflows/ci.yml | 6 ++++-- JSMR.Api/Dockerfile | 24 ++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 .dockerignore create mode 100644 JSMR.Api/Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..246fb08 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,14 @@ +**/bin/ +**/obj/ +**/.vs/ +**/.vscode/ +**/*.user +**/*.suo +**/*.csproj.user +**/node_modules/ +.git +.gitignore +Dockerfile +docker-compose*.yml +TestResults/ +.artifacts/ diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 5fff19d..bc1830d 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -38,6 +38,8 @@ jobs: env: REGISTRY: ${{ secrets.REGISTRY_HOST }} OWNER_REPO: ${{ github.repository }} + DOCKERFILE: src/JSMR.Api/Dockerfile + CONTEXT: . steps: - uses: actions/checkout@v4 @@ -56,9 +58,9 @@ jobs: - name: Enable BuildKit run: echo "DOCKER_BUILDKIT=1" >> $GITHUB_ENV - + - name: Build - run: docker build -t "${{ steps.names.outputs.image }}:${{ github.sha }}" . + run: docker build -f "$DOCKERFILE" -t "${{ steps.names.outputs.image }}:${{ github.sha }}" "$CONTEXT" - name: Push run: | diff --git a/JSMR.Api/Dockerfile b/JSMR.Api/Dockerfile new file mode 100644 index 0000000..d2dfcb9 --- /dev/null +++ b/JSMR.Api/Dockerfile @@ -0,0 +1,24 @@ +# --- Build stage --- +FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build +WORKDIR /src + +# copy solution + restore-friendly files first for better layer caching +COPY JSMR.sln ./ +COPY src/JSMR.Api/JSMR.Api.csproj src/JSMR.Api/ +COPY src/JSMR.Application/JSMR.Application.csproj src/JSMR.Application/ +COPY src/JSMR.Domain/JSMR.Domain.csproj src/JSMR.Domain/ +COPY src/JSMR.Infrastructure/JSMR.Infrastructure.csproj src/JSMR.Infrastructure/ +RUN dotnet restore src/JSMR.Api/JSMR.Api.csproj + +# now copy the rest and publish +COPY src/ ./src/ +RUN dotnet publish src/JSMR.Api/JSMR.Api.csproj -c Release -o /app/publish --no-restore + +# --- Runtime stage --- +FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS runtime +WORKDIR /app +COPY --from=build /app/publish ./ +# optional: set ASPNETCORE_URLS to port 8080 +ENV ASPNETCORE_URLS=http://+:8080 +EXPOSE 8080 +ENTRYPOINT ["dotnet", "JSMR.Api.dll"]