From 94979094dae2c06284fc1eaaf5547ea8447bbd4b Mon Sep 17 00:00:00 2001 From: Rhys Date: Mon, 23 Jun 2025 08:30:12 +1000 Subject: [PATCH 1/3] add --- docker-compose.portainer.yml | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 docker-compose.portainer.yml diff --git a/docker-compose.portainer.yml b/docker-compose.portainer.yml new file mode 100644 index 0000000..b8d6b42 --- /dev/null +++ b/docker-compose.portainer.yml @@ -0,0 +1,36 @@ +version: "3.8" + +services: + sharptools-mcp: + build: + context: . + dockerfile: Dockerfile + container_name: sharptools-mcp + ports: + - "3001:3001" + volumes: + - sharptools-logs:/app/logs + - sharptools-solutions:/app/solutions + environment: + - LOG_LEVEL=Information + - ASPNETCORE_ENVIRONMENT=Production + - ASPNETCORE_URLS=http://+:3001 + restart: unless-stopped + networks: + - sharptools-network + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:3001/health"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 40s + +volumes: + sharptools-logs: + driver: local + sharptools-solutions: + driver: local + +networks: + sharptools-network: + driver: bridge From 5dd5d619c477d89568216279dcedb49fe2521c78 Mon Sep 17 00:00:00 2001 From: Rhys Date: Mon, 23 Jun 2025 08:30:21 +1000 Subject: [PATCH 2/3] add --- Dockerfile | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..0163c8b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,46 @@ +FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build +WORKDIR /src + +# Copy solution file and project files first for better layer caching +COPY *.sln ./ +COPY SharpTools.SseServer/*.csproj ./SharpTools.SseServer/ +COPY SharpTools.StdioServer/*.csproj ./SharpTools.StdioServer/ +COPY SharpTools.Tools/*.csproj ./SharpTools.Tools/ + +# Restore packages +RUN dotnet restore SharpTools.sln + +# Copy source code +COPY . . + +# Build and publish +RUN dotnet build SharpTools.sln -c Release --no-restore +RUN dotnet publish SharpTools.SseServer/SharpTools.SseServer.csproj \ + -c Release \ + --no-restore \ + --no-build \ + -o /app + +FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime +WORKDIR /app + +# Create non-root user for security +RUN addgroup --gid 1001 --system appgroup && \ + adduser --uid 1001 --system --ingroup appgroup appuser + +# Create directories and set permissions +RUN mkdir -p /app/logs /app/solutions && \ + chown -R appuser:appgroup /app + +COPY --from=build --chown=appuser:appgroup /app . + +# Switch to non-root user +USER appuser + +EXPOSE 3001 + +# Add health check endpoint (using dotnet instead of curl for lighter image) +HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \ + CMD dotnet --version > /dev/null || exit 1 + +ENTRYPOINT ["dotnet", "SharpTools.SseServer.dll"] \ No newline at end of file From 3b8e0574179b39a43da91dc30c551ac8b0efb3ad Mon Sep 17 00:00:00 2001 From: Rhys Date: Mon, 23 Jun 2025 08:34:31 +1000 Subject: [PATCH 3/3] oops --- docker-compose.portainer.yml => docker-compose.yml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docker-compose.portainer.yml => docker-compose.yml (100%) diff --git a/docker-compose.portainer.yml b/docker-compose.yml similarity index 100% rename from docker-compose.portainer.yml rename to docker-compose.yml