Files
jmon/JMonServer/Containerfile
James Getrost 127b3ad5bf Initial commit: JMon cross-platform monitoring system
- gRPC client-server metrics collection
- PeriodicTimer-based 5-second sampling
- Delta encoding with configurable thresholds
- Queue/retry mechanism for resilience
- ProcessId tracking for duplicate detection
- Server-side state reconstruction
- Native AOT compilation support
- Docker/Podman containerization
- PostgreSQL + TimescaleDB persistence layer
2026-01-05 23:23:55 -06:00

36 lines
1.3 KiB
Docker

FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
RUN apt-get update && apt-get install -y build-essential clang zlib1g-dev && rm -rf /var/lib/apt/lists/*
WORKDIR /src
COPY ["JMonServer/JMonServer.csproj", "JMonServer/"]
COPY ["JMonAgent/JMonAgent.csproj", "JMonAgent/"]
COPY ["Protos/", "Protos/"]
RUN dotnet restore "JMonServer/JMonServer.csproj"
COPY . .
RUN dotnet build "JMonServer/JMonServer.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "JMonServer/JMonServer.csproj" -c Release -o /app/publish
FROM mcr.microsoft.com/dotnet/runtime-deps:10.0-noble
RUN apt-get update && apt-get install -y openssl && rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY --from=publish /app/publish .
# Generate self-signed PFX certificate for HTTPS (no password)
RUN mkdir -p /root/.aspnet/https && \
openssl req -x509 -newkey rsa:4096 -keyout /tmp/key.pem -out /tmp/cert.pem \
-days 365 -nodes -subj "/CN=*" && \
openssl pkcs12 -export -out /root/.aspnet/https/aspnetapp.pfx -inkey /tmp/key.pem -in /tmp/cert.pem -passout pass: && \
rm /tmp/key.pem /tmp/cert.pem
EXPOSE 5001
ENV ASPNETCORE_URLS=https://0.0.0.0:5001
ENV ASPNETCORE_Kestrel__Certificates__Default__Path=/root/.aspnet/https/aspnetapp.pfx
ENV ASPNETCORE_Kestrel__Certificates__Default__Password=
ENV ASPNETCORE_ENVIRONMENT=Development
ENTRYPOINT ["./JMonServer"]