OPC # 0001: Extract Clarity into standalone repo
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using Scalar.Aspire;
|
||||
|
||||
var builder = DistributedApplication.CreateBuilder(args);
|
||||
|
||||
#region MINIO
|
||||
var minio = builder.AddMinioContainer("minio");
|
||||
#endregion
|
||||
|
||||
#region REDIS
|
||||
var cache = builder.AddRedis("cache");
|
||||
#endregion
|
||||
|
||||
#region POSTGRESQL AND PGADMIN
|
||||
var postgres = builder.AddPostgres("postgres")
|
||||
.WithLifetime(ContainerLifetime.Persistent)
|
||||
.WithHostPort(5432)
|
||||
.WithPgAdmin();
|
||||
|
||||
var postgresdb = postgres.AddDatabase("postgresdb");
|
||||
#endregion
|
||||
|
||||
#region KEYCLOAK
|
||||
var keycloakDb = postgres.AddDatabase("authdb");
|
||||
|
||||
var keycloak = builder.AddKeycloak("keycloak", 8080)
|
||||
.WithEnvironment(async ctx =>
|
||||
{
|
||||
var connString = await keycloakDb.Resource.ConnectionStringExpression.GetValueAsync(CancellationToken.None);
|
||||
var conn = new Npgsql.NpgsqlConnectionStringBuilder(connString);
|
||||
ctx.EnvironmentVariables["KC_DB"] = "postgres";
|
||||
ctx.EnvironmentVariables["KC_DB_URL"] = $"jdbc:postgresql://postgres:5432/{keycloakDb.Resource.DatabaseName}";
|
||||
ctx.EnvironmentVariables["KC_DB_USERNAME"] = conn.Username!;
|
||||
ctx.EnvironmentVariables["KC_DB_PASSWORD"] = conn.Password!;
|
||||
})
|
||||
.WaitFor(keycloakDb)
|
||||
.WithRealmImport("KeycloakConfig/");
|
||||
#endregion
|
||||
|
||||
#region EFCORE MIGRATION WORKER
|
||||
var migrations = builder.AddProject<Projects.Clarity_MigrationService>("clarity-migrationservice")
|
||||
.WithReference(postgresdb)
|
||||
.WaitFor(postgresdb);
|
||||
#endregion
|
||||
|
||||
#region REST API
|
||||
var server = builder.AddProject<Projects.Clarity_Server>("server")
|
||||
.WaitFor(keycloak)
|
||||
.WithReference(cache)
|
||||
.WithReference(postgresdb)
|
||||
.WaitFor(cache)
|
||||
.WaitFor(postgresdb)
|
||||
.WithReference(migrations)
|
||||
.WithReference(minio)
|
||||
.WaitForCompletion(migrations)
|
||||
.WithHttpHealthCheck("/health")
|
||||
.WithHttpEndpoint(port: 5416, name: "clarity-http")
|
||||
.WithExternalHttpEndpoints();
|
||||
#endregion
|
||||
|
||||
#region REACT
|
||||
var webfrontend = builder.AddViteApp("webfrontend", "../frontend")
|
||||
.WaitFor(keycloak)
|
||||
.WithReference(server)
|
||||
.WaitFor(server)
|
||||
.WithEnvironment("VITE_KEYCLOAK_URL", keycloak.GetEndpoint("http"))
|
||||
.WithEnvironment("VITE_KEYCLOAK_REALM", "clarity")
|
||||
.WithEnvironment("VITE_KEYCLOAK_CLIENT_ID", "clarity-web-app");
|
||||
|
||||
server.PublishWithContainerFiles(webfrontend, "wwwroot");
|
||||
#endregion
|
||||
|
||||
#region SCALAR API DOCS
|
||||
var scalar = builder.AddScalarApiReference();
|
||||
scalar
|
||||
.WithApiReference(server);
|
||||
// .WithApiReference(webfrontend);
|
||||
#endregion
|
||||
|
||||
builder.Build().Run();
|
||||
@@ -0,0 +1,30 @@
|
||||
<Project Sdk="Aspire.AppHost.Sdk/13.2.2">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net10.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<UserSecretsId>a37b81ab-bcb8-4599-a049-4c21e1e4ff17</UserSecretsId>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Clarity.MigrationService\Clarity.MigrationService.csproj" />
|
||||
<ProjectReference Include="..\Clarity.Server\Clarity.Server.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Aspire.Hosting.JavaScript" />
|
||||
<PackageReference Include="Aspire.Hosting.Keycloak" />
|
||||
<PackageReference Include="Aspire.Hosting.PostgreSQL" />
|
||||
<PackageReference Include="Aspire.Hosting.Redis" />
|
||||
<PackageReference Include="CommunityToolkit.Aspire.Hosting.Minio" />
|
||||
<PackageReference Include="Scalar.Aspire" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Update="KeycloakConfig\realm-export.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/launchsettings.json",
|
||||
"profiles": {
|
||||
"https": {
|
||||
"commandName": "Project",
|
||||
"dotnetRunMessages": true,
|
||||
"launchBrowser": true,
|
||||
"applicationUrl": "https://clarity.dev.localhost:17052;http://clarity.dev.localhost:15033",
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development",
|
||||
"DOTNET_ENVIRONMENT": "Development",
|
||||
"ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL": "https://localhost:21214",
|
||||
"ASPIRE_DASHBOARD_MCP_ENDPOINT_URL": "https://localhost:23283",
|
||||
"ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL": "https://localhost:22072"
|
||||
}
|
||||
},
|
||||
"http": {
|
||||
"commandName": "Project",
|
||||
"dotnetRunMessages": true,
|
||||
"launchBrowser": true,
|
||||
"applicationUrl": "http://clarity.dev.localhost:15033",
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development",
|
||||
"DOTNET_ENVIRONMENT": "Development",
|
||||
"ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL": "http://localhost:19177",
|
||||
"ASPIRE_DASHBOARD_MCP_ENDPOINT_URL": "http://localhost:18052",
|
||||
"ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL": "http://localhost:20131"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"Microsoft.AspNetCore": "Warning"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"Microsoft.AspNetCore": "Warning",
|
||||
"Aspire.Hosting.Dcp": "Warning"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user