mirror of
https://github.com/DorkSquadRR/DorkNet.git
synced 2026-10-25 23:18:44 -07:00
Merge pull request #4 from DorkSquadRR/microservices-scaffold
Add microservices scaffold
This commit is contained in:
@@ -0,0 +1,33 @@
|
|||||||
|
ARG DOTNET_VERSION=9.0
|
||||||
|
|
||||||
|
FROM mcr.microsoft.com/dotnet/sdk:${DOTNET_VERSION} AS build
|
||||||
|
ARG PROJECT_PATH
|
||||||
|
WORKDIR /src
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
RUN dotnet publish "${PROJECT_PATH}" -c Release -o /app/publish
|
||||||
|
|
||||||
|
FROM mcr.microsoft.com/dotnet/aspnet:${DOTNET_VERSION} AS runtime
|
||||||
|
ARG APP_DLL
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y --no-install-recommends curl \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
USER app
|
||||||
|
|
||||||
|
COPY --from=build --chown=app:app /app/publish .
|
||||||
|
|
||||||
|
ENV ASPNETCORE_ENVIRONMENT=Production \
|
||||||
|
ASPNETCORE_URLS=http://0.0.0.0:8080 \
|
||||||
|
DOTNET_RUNNING_IN_CONTAINER=true \
|
||||||
|
DOTNET_PRINT_TELEMETRY_MESSAGE=false \
|
||||||
|
APP_DLL=${APP_DLL}
|
||||||
|
|
||||||
|
EXPOSE 8080
|
||||||
|
|
||||||
|
HEALTHCHECK --interval=15s --timeout=5s --start-period=30s --retries=3 \
|
||||||
|
CMD curl --fail --silent http://localhost:8080/healthz || exit 1
|
||||||
|
|
||||||
|
ENTRYPOINT ["sh", "-c", "dotnet \"$APP_DLL\""]
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net9.0</TargetFramework>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
namespace DorkNet.Contracts;
|
||||||
|
|
||||||
|
public sealed class DorkNetServiceMapOptions
|
||||||
|
{
|
||||||
|
public string Identity { get; set; } = "http://localhost:8081";
|
||||||
|
public string Rooms { get; set; } = "http://localhost:8082";
|
||||||
|
public string Notify { get; set; } = "http://localhost:8083";
|
||||||
|
public string Monolith { get; set; } = "http://localhost:8084";
|
||||||
|
|
||||||
|
public IReadOnlyList<DorkNetServiceEndpoint> Endpoints()
|
||||||
|
{
|
||||||
|
DorkNetServiceEndpoint[] endpoints =
|
||||||
|
[
|
||||||
|
new(ServiceNames.Identity, Identity),
|
||||||
|
new(ServiceNames.Rooms, Rooms),
|
||||||
|
new(ServiceNames.Notify, Notify),
|
||||||
|
new(ServiceNames.Monolith, Monolith),
|
||||||
|
];
|
||||||
|
|
||||||
|
return endpoints
|
||||||
|
.Where(endpoint => !string.IsNullOrWhiteSpace(endpoint.BaseUrl))
|
||||||
|
.ToArray();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed record DorkNetServiceEndpoint(string Name, string BaseUrl);
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
namespace DorkNet.Contracts;
|
||||||
|
|
||||||
|
public sealed record ServiceHealthResponse(
|
||||||
|
string Service,
|
||||||
|
string Status,
|
||||||
|
DateTimeOffset CheckedAtUtc);
|
||||||
|
|
||||||
|
public sealed record ServiceCapabilityResponse(
|
||||||
|
string Service,
|
||||||
|
string[] Owns,
|
||||||
|
string[] PlannedPublicRoutes);
|
||||||
|
|
||||||
|
public sealed record ServiceProbeResponse(
|
||||||
|
string Service,
|
||||||
|
string BaseUrl,
|
||||||
|
string Status,
|
||||||
|
int? StatusCode,
|
||||||
|
string? Error,
|
||||||
|
DateTimeOffset CheckedAtUtc);
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
namespace DorkNet.Contracts;
|
||||||
|
|
||||||
|
public static class ServiceNames
|
||||||
|
{
|
||||||
|
public const string Gateway = "gateway";
|
||||||
|
public const string Identity = "identity";
|
||||||
|
public const string Rooms = "rooms";
|
||||||
|
public const string Notify = "notify";
|
||||||
|
public const string Monolith = "monolith";
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net9.0</TargetFramework>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\DorkNet.Contracts\DorkNet.Contracts.csproj" />
|
||||||
|
<ProjectReference Include="..\DorkNet.ServiceDefaults\DorkNet.ServiceDefaults.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
using DorkNet.Contracts;
|
||||||
|
using DorkNet.ServiceDefaults;
|
||||||
|
using Microsoft.Extensions.Options;
|
||||||
|
|
||||||
|
var builder = WebApplication.CreateBuilder(args);
|
||||||
|
builder.Configuration.AddJsonFile("appsettings.Local.json",
|
||||||
|
optional: true, reloadOnChange: true);
|
||||||
|
|
||||||
|
builder.AddDorkNetServiceDefaults(ServiceNames.Gateway);
|
||||||
|
builder.Services.Configure<DorkNetServiceMapOptions>(
|
||||||
|
builder.Configuration.GetSection("DorkNet:Services"));
|
||||||
|
|
||||||
|
var app = builder.Build();
|
||||||
|
|
||||||
|
app.MapDorkNetServiceDefaults();
|
||||||
|
|
||||||
|
app.MapGet("/", () => Results.Redirect("/healthz"));
|
||||||
|
app.MapGet("/internal/services", (IOptions<DorkNetServiceMapOptions> options) =>
|
||||||
|
Results.Ok(options.Value.Endpoints()));
|
||||||
|
|
||||||
|
app.MapGet("/internal/services/health", async (
|
||||||
|
IOptions<DorkNetServiceMapOptions> options,
|
||||||
|
IHttpClientFactory httpClientFactory,
|
||||||
|
CancellationToken ct) =>
|
||||||
|
{
|
||||||
|
var client = httpClientFactory.CreateClient();
|
||||||
|
var probes = new List<ServiceProbeResponse>();
|
||||||
|
|
||||||
|
foreach (var endpoint in options.Value.Endpoints())
|
||||||
|
{
|
||||||
|
probes.Add(await ProbeServiceAsync(client, endpoint, ct));
|
||||||
|
}
|
||||||
|
|
||||||
|
return Results.Ok(probes);
|
||||||
|
});
|
||||||
|
|
||||||
|
app.Run();
|
||||||
|
|
||||||
|
static async Task<ServiceProbeResponse> ProbeServiceAsync(
|
||||||
|
HttpClient client,
|
||||||
|
DorkNetServiceEndpoint endpoint,
|
||||||
|
CancellationToken ct)
|
||||||
|
{
|
||||||
|
var checkedAt = DateTimeOffset.UtcNow;
|
||||||
|
var baseUrl = endpoint.BaseUrl.TrimEnd('/');
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var response = await client.GetAsync($"{baseUrl}/internal/healthz", ct);
|
||||||
|
return new ServiceProbeResponse(
|
||||||
|
endpoint.Name,
|
||||||
|
endpoint.BaseUrl,
|
||||||
|
response.IsSuccessStatusCode ? "ok" : "unhealthy",
|
||||||
|
(int)response.StatusCode,
|
||||||
|
null,
|
||||||
|
checkedAt);
|
||||||
|
}
|
||||||
|
catch (Exception ex) when (ex is HttpRequestException or TaskCanceledException)
|
||||||
|
{
|
||||||
|
return new ServiceProbeResponse(
|
||||||
|
endpoint.Name,
|
||||||
|
endpoint.BaseUrl,
|
||||||
|
"unreachable",
|
||||||
|
null,
|
||||||
|
ex.Message,
|
||||||
|
checkedAt);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"Logging": {
|
||||||
|
"LogLevel": {
|
||||||
|
"Default": "Information",
|
||||||
|
"Microsoft.AspNetCore": "Warning",
|
||||||
|
"System.Net.Http.HttpClient": "Warning"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DorkNet": {
|
||||||
|
"Services": {
|
||||||
|
"Identity": "http://localhost:8081",
|
||||||
|
"Rooms": "http://localhost:8082",
|
||||||
|
"Notify": "http://localhost:8083",
|
||||||
|
"Monolith": "http://localhost:8084"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net9.0</TargetFramework>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<FrameworkReference Include="Microsoft.AspNetCore.App" />
|
||||||
|
<ProjectReference Include="..\DorkNet.Contracts\DorkNet.Contracts.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
using DorkNet.Contracts;
|
||||||
|
using Microsoft.AspNetCore.Builder;
|
||||||
|
using Microsoft.AspNetCore.Http;
|
||||||
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
|
|
||||||
|
namespace DorkNet.ServiceDefaults;
|
||||||
|
|
||||||
|
public static class DorkNetServiceDefaultsExtensions
|
||||||
|
{
|
||||||
|
public static WebApplicationBuilder AddDorkNetServiceDefaults(
|
||||||
|
this WebApplicationBuilder builder,
|
||||||
|
string serviceName)
|
||||||
|
{
|
||||||
|
builder.Services.AddSingleton(new DorkNetServiceInfo(serviceName));
|
||||||
|
builder.Services.AddHealthChecks();
|
||||||
|
builder.Services.AddHttpClient();
|
||||||
|
builder.Services.ConfigureHttpJsonOptions(opt =>
|
||||||
|
opt.SerializerOptions.PropertyNamingPolicy = null);
|
||||||
|
|
||||||
|
return builder;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static WebApplication MapDorkNetServiceDefaults(this WebApplication app)
|
||||||
|
{
|
||||||
|
app.MapHealthChecks("/healthz");
|
||||||
|
app.MapGet("/internal/healthz", (DorkNetServiceInfo info) =>
|
||||||
|
{
|
||||||
|
return Results.Ok(new ServiceHealthResponse(
|
||||||
|
info.Name,
|
||||||
|
"ok",
|
||||||
|
DateTimeOffset.UtcNow));
|
||||||
|
});
|
||||||
|
|
||||||
|
return app;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
namespace DorkNet.ServiceDefaults;
|
||||||
|
|
||||||
|
public sealed record DorkNetServiceInfo(string Name);
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net9.0</TargetFramework>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\DorkNet.Contracts\DorkNet.Contracts.csproj" />
|
||||||
|
<ProjectReference Include="..\DorkNet.ServiceDefaults\DorkNet.ServiceDefaults.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
using DorkNet.Contracts;
|
||||||
|
using DorkNet.ServiceDefaults;
|
||||||
|
|
||||||
|
var builder = WebApplication.CreateBuilder(args);
|
||||||
|
builder.Configuration.AddJsonFile("appsettings.Local.json",
|
||||||
|
optional: true, reloadOnChange: true);
|
||||||
|
|
||||||
|
builder.AddDorkNetServiceDefaults(ServiceNames.Identity);
|
||||||
|
|
||||||
|
var app = builder.Build();
|
||||||
|
|
||||||
|
app.MapDorkNetServiceDefaults();
|
||||||
|
app.MapGet("/internal/identity/capabilities", () =>
|
||||||
|
Results.Ok(new ServiceCapabilityResponse(
|
||||||
|
ServiceNames.Identity,
|
||||||
|
[
|
||||||
|
"accounts",
|
||||||
|
"auth",
|
||||||
|
"platform-login",
|
||||||
|
"jwt-issuance",
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/account/*",
|
||||||
|
"/api/account/*",
|
||||||
|
"/api/platformlogin/*",
|
||||||
|
"/api/auth/*",
|
||||||
|
])));
|
||||||
|
|
||||||
|
app.Run();
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"Logging": {
|
||||||
|
"LogLevel": {
|
||||||
|
"Default": "Information",
|
||||||
|
"Microsoft.AspNetCore": "Warning"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net9.0</TargetFramework>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\DorkNet.Contracts\DorkNet.Contracts.csproj" />
|
||||||
|
<ProjectReference Include="..\DorkNet.ServiceDefaults\DorkNet.ServiceDefaults.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
using DorkNet.Contracts;
|
||||||
|
using DorkNet.ServiceDefaults;
|
||||||
|
|
||||||
|
var builder = WebApplication.CreateBuilder(args);
|
||||||
|
builder.Configuration.AddJsonFile("appsettings.Local.json",
|
||||||
|
optional: true, reloadOnChange: true);
|
||||||
|
|
||||||
|
builder.AddDorkNetServiceDefaults(ServiceNames.Notify);
|
||||||
|
|
||||||
|
var app = builder.Build();
|
||||||
|
|
||||||
|
app.MapDorkNetServiceDefaults();
|
||||||
|
app.MapGet("/internal/notify/capabilities", () =>
|
||||||
|
Results.Ok(new ServiceCapabilityResponse(
|
||||||
|
ServiceNames.Notify,
|
||||||
|
[
|
||||||
|
"signalr-edge",
|
||||||
|
"notification-fanout",
|
||||||
|
"presence",
|
||||||
|
"player-request-logs",
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/hub/v1",
|
||||||
|
"/api/notification/*",
|
||||||
|
"/player/*presence*",
|
||||||
|
])));
|
||||||
|
|
||||||
|
app.Run();
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"Logging": {
|
||||||
|
"LogLevel": {
|
||||||
|
"Default": "Information",
|
||||||
|
"Microsoft.AspNetCore": "Warning"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net9.0</TargetFramework>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\DorkNet.Contracts\DorkNet.Contracts.csproj" />
|
||||||
|
<ProjectReference Include="..\DorkNet.ServiceDefaults\DorkNet.ServiceDefaults.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
using DorkNet.Contracts;
|
||||||
|
using DorkNet.ServiceDefaults;
|
||||||
|
|
||||||
|
var builder = WebApplication.CreateBuilder(args);
|
||||||
|
builder.Configuration.AddJsonFile("appsettings.Local.json",
|
||||||
|
optional: true, reloadOnChange: true);
|
||||||
|
|
||||||
|
builder.AddDorkNetServiceDefaults(ServiceNames.Rooms);
|
||||||
|
|
||||||
|
var app = builder.Build();
|
||||||
|
|
||||||
|
app.MapDorkNetServiceDefaults();
|
||||||
|
app.MapGet("/internal/rooms/capabilities", () =>
|
||||||
|
Results.Ok(new ServiceCapabilityResponse(
|
||||||
|
ServiceNames.Rooms,
|
||||||
|
[
|
||||||
|
"rooms",
|
||||||
|
"subrooms",
|
||||||
|
"room-keys",
|
||||||
|
"matchmaking",
|
||||||
|
"discovery",
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/rooms/*",
|
||||||
|
"/api/rooms/*",
|
||||||
|
"/roomserver/*",
|
||||||
|
"/v1/find",
|
||||||
|
"/v1/join/*",
|
||||||
|
])));
|
||||||
|
|
||||||
|
app.Run();
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"Logging": {
|
||||||
|
"LogLevel": {
|
||||||
|
"Default": "Information",
|
||||||
|
"Microsoft.AspNetCore": "Warning"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+84
@@ -13,6 +13,18 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MigrateSqliteToPostgres", "
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DorkNet.AdminMobile", "DorkNet.AdminMobile\DorkNet.AdminMobile.csproj", "{C2265F00-DFC5-4352-A94C-B887E3C0E5CA}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DorkNet.AdminMobile", "DorkNet.AdminMobile\DorkNet.AdminMobile.csproj", "{C2265F00-DFC5-4352-A94C-B887E3C0E5CA}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DorkNet.Contracts", "DorkNet.Contracts\DorkNet.Contracts.csproj", "{7D9E995E-5333-43B2-848B-3522C6C3D893}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DorkNet.ServiceDefaults", "DorkNet.ServiceDefaults\DorkNet.ServiceDefaults.csproj", "{0A66087B-37DF-401D-AFAC-01E7324C2460}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DorkNet.Gateway", "DorkNet.Gateway\DorkNet.Gateway.csproj", "{1A7D03D5-DAC5-474C-9A21-8F2EEF82396F}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DorkNet.Services.Identity", "DorkNet.Services.Identity\DorkNet.Services.Identity.csproj", "{E85B21BA-ED08-4CED-ADB5-6B5E5ADEEBD1}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DorkNet.Services.Rooms", "DorkNet.Services.Rooms\DorkNet.Services.Rooms.csproj", "{3F01BA71-BD1E-461B-BCD0-F2E9CC92B640}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DorkNet.Services.Notify", "DorkNet.Services.Notify\DorkNet.Services.Notify.csproj", "{5A6D7277-0974-4F12-AD9D-C705F5CFE19C}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
@@ -71,6 +83,78 @@ Global
|
|||||||
{C2265F00-DFC5-4352-A94C-B887E3C0E5CA}.Release|x64.Build.0 = Release|Any CPU
|
{C2265F00-DFC5-4352-A94C-B887E3C0E5CA}.Release|x64.Build.0 = Release|Any CPU
|
||||||
{C2265F00-DFC5-4352-A94C-B887E3C0E5CA}.Release|x86.ActiveCfg = Release|Any CPU
|
{C2265F00-DFC5-4352-A94C-B887E3C0E5CA}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
{C2265F00-DFC5-4352-A94C-B887E3C0E5CA}.Release|x86.Build.0 = Release|Any CPU
|
{C2265F00-DFC5-4352-A94C-B887E3C0E5CA}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{7D9E995E-5333-43B2-848B-3522C6C3D893}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{7D9E995E-5333-43B2-848B-3522C6C3D893}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{7D9E995E-5333-43B2-848B-3522C6C3D893}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{7D9E995E-5333-43B2-848B-3522C6C3D893}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{7D9E995E-5333-43B2-848B-3522C6C3D893}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{7D9E995E-5333-43B2-848B-3522C6C3D893}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{7D9E995E-5333-43B2-848B-3522C6C3D893}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{7D9E995E-5333-43B2-848B-3522C6C3D893}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{7D9E995E-5333-43B2-848B-3522C6C3D893}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{7D9E995E-5333-43B2-848B-3522C6C3D893}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{7D9E995E-5333-43B2-848B-3522C6C3D893}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{7D9E995E-5333-43B2-848B-3522C6C3D893}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{0A66087B-37DF-401D-AFAC-01E7324C2460}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{0A66087B-37DF-401D-AFAC-01E7324C2460}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{0A66087B-37DF-401D-AFAC-01E7324C2460}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{0A66087B-37DF-401D-AFAC-01E7324C2460}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{0A66087B-37DF-401D-AFAC-01E7324C2460}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{0A66087B-37DF-401D-AFAC-01E7324C2460}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{0A66087B-37DF-401D-AFAC-01E7324C2460}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{0A66087B-37DF-401D-AFAC-01E7324C2460}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{0A66087B-37DF-401D-AFAC-01E7324C2460}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{0A66087B-37DF-401D-AFAC-01E7324C2460}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{0A66087B-37DF-401D-AFAC-01E7324C2460}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{0A66087B-37DF-401D-AFAC-01E7324C2460}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{1A7D03D5-DAC5-474C-9A21-8F2EEF82396F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{1A7D03D5-DAC5-474C-9A21-8F2EEF82396F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{1A7D03D5-DAC5-474C-9A21-8F2EEF82396F}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{1A7D03D5-DAC5-474C-9A21-8F2EEF82396F}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{1A7D03D5-DAC5-474C-9A21-8F2EEF82396F}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{1A7D03D5-DAC5-474C-9A21-8F2EEF82396F}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{1A7D03D5-DAC5-474C-9A21-8F2EEF82396F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{1A7D03D5-DAC5-474C-9A21-8F2EEF82396F}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{1A7D03D5-DAC5-474C-9A21-8F2EEF82396F}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{1A7D03D5-DAC5-474C-9A21-8F2EEF82396F}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{1A7D03D5-DAC5-474C-9A21-8F2EEF82396F}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{1A7D03D5-DAC5-474C-9A21-8F2EEF82396F}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{E85B21BA-ED08-4CED-ADB5-6B5E5ADEEBD1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{E85B21BA-ED08-4CED-ADB5-6B5E5ADEEBD1}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{E85B21BA-ED08-4CED-ADB5-6B5E5ADEEBD1}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{E85B21BA-ED08-4CED-ADB5-6B5E5ADEEBD1}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{E85B21BA-ED08-4CED-ADB5-6B5E5ADEEBD1}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{E85B21BA-ED08-4CED-ADB5-6B5E5ADEEBD1}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{E85B21BA-ED08-4CED-ADB5-6B5E5ADEEBD1}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{E85B21BA-ED08-4CED-ADB5-6B5E5ADEEBD1}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{E85B21BA-ED08-4CED-ADB5-6B5E5ADEEBD1}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{E85B21BA-ED08-4CED-ADB5-6B5E5ADEEBD1}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{E85B21BA-ED08-4CED-ADB5-6B5E5ADEEBD1}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{E85B21BA-ED08-4CED-ADB5-6B5E5ADEEBD1}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{3F01BA71-BD1E-461B-BCD0-F2E9CC92B640}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{3F01BA71-BD1E-461B-BCD0-F2E9CC92B640}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{3F01BA71-BD1E-461B-BCD0-F2E9CC92B640}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{3F01BA71-BD1E-461B-BCD0-F2E9CC92B640}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{3F01BA71-BD1E-461B-BCD0-F2E9CC92B640}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{3F01BA71-BD1E-461B-BCD0-F2E9CC92B640}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{3F01BA71-BD1E-461B-BCD0-F2E9CC92B640}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{3F01BA71-BD1E-461B-BCD0-F2E9CC92B640}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{3F01BA71-BD1E-461B-BCD0-F2E9CC92B640}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{3F01BA71-BD1E-461B-BCD0-F2E9CC92B640}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{3F01BA71-BD1E-461B-BCD0-F2E9CC92B640}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{3F01BA71-BD1E-461B-BCD0-F2E9CC92B640}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{5A6D7277-0974-4F12-AD9D-C705F5CFE19C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{5A6D7277-0974-4F12-AD9D-C705F5CFE19C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{5A6D7277-0974-4F12-AD9D-C705F5CFE19C}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{5A6D7277-0974-4F12-AD9D-C705F5CFE19C}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{5A6D7277-0974-4F12-AD9D-C705F5CFE19C}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{5A6D7277-0974-4F12-AD9D-C705F5CFE19C}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{5A6D7277-0974-4F12-AD9D-C705F5CFE19C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{5A6D7277-0974-4F12-AD9D-C705F5CFE19C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{5A6D7277-0974-4F12-AD9D-C705F5CFE19C}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{5A6D7277-0974-4F12-AD9D-C705F5CFE19C}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{5A6D7277-0974-4F12-AD9D-C705F5CFE19C}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{5A6D7277-0974-4F12-AD9D-C705F5CFE19C}.Release|x86.Build.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|||||||
@@ -0,0 +1,71 @@
|
|||||||
|
services:
|
||||||
|
gateway:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile.service
|
||||||
|
args:
|
||||||
|
PROJECT_PATH: DorkNet.Gateway/DorkNet.Gateway.csproj
|
||||||
|
APP_DLL: DorkNet.Gateway.dll
|
||||||
|
environment:
|
||||||
|
DorkNet__Services__Identity: http://identity:8080
|
||||||
|
DorkNet__Services__Rooms: http://rooms:8080
|
||||||
|
DorkNet__Services__Notify: http://notify:8080
|
||||||
|
DorkNet__Services__Monolith: ""
|
||||||
|
ports:
|
||||||
|
- "8080:8080"
|
||||||
|
depends_on:
|
||||||
|
- identity
|
||||||
|
- rooms
|
||||||
|
- notify
|
||||||
|
|
||||||
|
identity:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile.service
|
||||||
|
args:
|
||||||
|
PROJECT_PATH: DorkNet.Services.Identity/DorkNet.Services.Identity.csproj
|
||||||
|
APP_DLL: DorkNet.Services.Identity.dll
|
||||||
|
depends_on:
|
||||||
|
- postgres
|
||||||
|
- redis
|
||||||
|
|
||||||
|
rooms:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile.service
|
||||||
|
args:
|
||||||
|
PROJECT_PATH: DorkNet.Services.Rooms/DorkNet.Services.Rooms.csproj
|
||||||
|
APP_DLL: DorkNet.Services.Rooms.dll
|
||||||
|
environment:
|
||||||
|
S3__Endpoint: ${DORKNET_S3_ENDPOINT:-}
|
||||||
|
S3__AccessKey: ${DORKNET_S3_ACCESS_KEY:-}
|
||||||
|
S3__SecretKey: ${DORKNET_S3_SECRET_KEY:-}
|
||||||
|
S3__Region: ${DORKNET_S3_REGION:-garage}
|
||||||
|
depends_on:
|
||||||
|
- postgres
|
||||||
|
- redis
|
||||||
|
|
||||||
|
notify:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile.service
|
||||||
|
args:
|
||||||
|
PROJECT_PATH: DorkNet.Services.Notify/DorkNet.Services.Notify.csproj
|
||||||
|
APP_DLL: DorkNet.Services.Notify.dll
|
||||||
|
depends_on:
|
||||||
|
- redis
|
||||||
|
|
||||||
|
postgres:
|
||||||
|
image: postgres:16-alpine
|
||||||
|
environment:
|
||||||
|
POSTGRES_DB: dorknet
|
||||||
|
POSTGRES_USER: dorknet
|
||||||
|
POSTGRES_PASSWORD: dorknet_dev
|
||||||
|
volumes:
|
||||||
|
- microservices-postgres:/var/lib/postgresql/data
|
||||||
|
|
||||||
|
redis:
|
||||||
|
image: redis:7-alpine
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
microservices-postgres:
|
||||||
Reference in New Issue
Block a user