From 50d52793175053c303df560e481dd5f2ac90ac94 Mon Sep 17 00:00:00 2001 From: "willem.serruys" Date: Mon, 29 Dec 2025 05:32:16 +0100 Subject: [PATCH] chore: initial --- .gitignore | 7 ++++ docker-compose.yml | 4 ++ dockerfiles/power_control.Dockerfile | 24 +++++++++++ microservices/power_control/Program.cs | 41 +++++++++++++++++++ .../power_control/power_control.csproj | 13 ++++++ 5 files changed, 89 insertions(+) create mode 100644 dockerfiles/power_control.Dockerfile create mode 100644 microservices/power_control/Program.cs create mode 100644 microservices/power_control/power_control.csproj diff --git a/.gitignore b/.gitignore index 0f5f168..883f4ef 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,10 @@ configuration-production.yaml node_modules/ config/ + +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ + +[Oo]bj/ diff --git a/docker-compose.yml b/docker-compose.yml index 6cd6cd7..344cd34 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -132,6 +132,10 @@ services: restart: unless-stopped volumes: - ${REPO_DIR}/configurations/otel/collector-config.yaml:/etc/otelcol-contrib/config.yaml + power_control: + build: + context: . + dockerfile: ./dockerfiles/power_control.Dockerfile # Only enable if external services present # ports: # - 4317:4317 # OTLP gRPC receiver diff --git a/dockerfiles/power_control.Dockerfile b/dockerfiles/power_control.Dockerfile new file mode 100644 index 0000000..bd3323b --- /dev/null +++ b/dockerfiles/power_control.Dockerfile @@ -0,0 +1,24 @@ +FROM mcr.microsoft.com/dotnet/aspnet:10.0.101-noble-arm64v8 AS base +USER $APP_UID + +EXPOSE 8080 + +FROM mcr.microsoft.com/dotnet/sdk:10.0.101-noble-arm64v8 AS build +COPY ./microservices/power_control/*.csproj /microservices/power_control/ + +WORKDIR /microservices/power_control +RUN dotnet restore + +WORKDIR / +COPY ./microservices/power_control /microservices/power_control + +WORKDIR /microservices/power_control +# This stage is used to publish the service project to be copied to the final stage +FROM build AS publish +ARG BUILD_CONFIGURATION +RUN dotnet publish "./power_control.csproj" -c Release -o /app/publish + +FROM base AS final +WORKDIR /app +COPY --from=publish /app/publish . +ENTRYPOINT ["dotnet", "power_control.dll"] diff --git a/microservices/power_control/Program.cs b/microservices/power_control/Program.cs new file mode 100644 index 0000000..ee9d65d --- /dev/null +++ b/microservices/power_control/Program.cs @@ -0,0 +1,41 @@ +var builder = WebApplication.CreateBuilder(args); + +// Add services to the container. +// Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi +builder.Services.AddOpenApi(); + +var app = builder.Build(); + +// Configure the HTTP request pipeline. +if (app.Environment.IsDevelopment()) +{ + app.MapOpenApi(); +} + +app.UseHttpsRedirection(); + +var summaries = new[] +{ + "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" +}; + +app.MapGet("/weatherforecast", () => +{ + var forecast = Enumerable.Range(1, 5).Select(index => + new WeatherForecast + ( + DateOnly.FromDateTime(DateTime.Now.AddDays(index)), + Random.Shared.Next(-20, 55), + summaries[Random.Shared.Next(summaries.Length)] + )) + .ToArray(); + return forecast; +}) +.WithName("GetWeatherForecast"); + +app.Run(); + +record WeatherForecast(DateOnly Date, int TemperatureC, string? Summary) +{ + public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); +} diff --git a/microservices/power_control/power_control.csproj b/microservices/power_control/power_control.csproj new file mode 100644 index 0000000..f5064e1 --- /dev/null +++ b/microservices/power_control/power_control.csproj @@ -0,0 +1,13 @@ + + + + net9.0 + enable + enable + + + + + + +