From 101a340d8c6f8edfd475fa1c410127b2077f7f9c Mon Sep 17 00:00:00 2001 From: AJ Isaacs Date: Wed, 3 Dec 2025 22:01:03 -0500 Subject: [PATCH] Chore: Add Docker containerization support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add Dockerfile with multi-stage build for .NET 8 - Include ImageMagick dependencies for Magick.NET - Add docker-compose.yml with volume mount for receipts - Add .dockerignore to exclude build artifacts 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- MoneyMap/.dockerignore | 7 +++++++ MoneyMap/Dockerfile | 35 +++++++++++++++++++++++++++++++++++ docker-compose.yml | 15 +++++++++++++++ 3 files changed, 57 insertions(+) create mode 100644 MoneyMap/.dockerignore create mode 100644 MoneyMap/Dockerfile create mode 100644 docker-compose.yml diff --git a/MoneyMap/.dockerignore b/MoneyMap/.dockerignore new file mode 100644 index 0000000..6fd8373 --- /dev/null +++ b/MoneyMap/.dockerignore @@ -0,0 +1,7 @@ +bin/ +obj/ +.vs/ +*.user +*.suo +appsettings.Development.json +wwwroot/receipts/ diff --git a/MoneyMap/Dockerfile b/MoneyMap/Dockerfile new file mode 100644 index 0000000..216b247 --- /dev/null +++ b/MoneyMap/Dockerfile @@ -0,0 +1,35 @@ +# Build stage +FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build +WORKDIR /src + +# Copy csproj and restore dependencies +COPY MoneyMap.csproj . +RUN dotnet restore + +# Copy everything else and build +COPY . . +RUN dotnet publish -c Release -o /app/publish + +# Runtime stage +FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime +WORKDIR /app + +# Install ImageMagick dependencies for Magick.NET +RUN apt-get update && apt-get install -y \ + libmagickwand-dev \ + && rm -rf /var/lib/apt/lists/* + +# Copy published app +COPY --from=build /app/publish . + +# Create directory for receipts +RUN mkdir -p /app/receipts + +# Expose port +EXPOSE 5010 + +# Set environment variables +ENV ASPNETCORE_URLS=http://+:5010 +ENV ASPNETCORE_ENVIRONMENT=Production + +ENTRYPOINT ["dotnet", "MoneyMap.dll"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..88cad6c --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,15 @@ +services: + moneymap: + build: + context: ./MoneyMap + dockerfile: Dockerfile + container_name: moneymap + ports: + - "5010:5010" + environment: + - ConnectionStrings__MoneyMapDb=Server=barge.lan;Database=MoneyMap;User Id=moneymap;Password=YOUR_PASSWORD;TrustServerCertificate=True; + - Receipts__StoragePath=/app/receipts + - OPENAI_API_KEY=${OPENAI_API_KEY} + volumes: + - /mnt/docker-data/moneymap/receipts:/app/receipts + restart: unless-stopped