diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 1e463bc41b..1eec789659 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -29,7 +29,7 @@ ] } }, - "forwardPorts": [5601, 7101, 7111, 7121, 7131, 8025], + "forwardPorts": [5601, 7101, 7111, 7121, 7131, 8026], "otherPortsAttributes": { "onAutoForward": "ignore" }, @@ -53,7 +53,7 @@ "label": "App", "protocol": "https" }, - "8025": { + "8026": { "label": "Mail UI" } }, diff --git a/src/Exceptionless.AppHost/Extensions/AspireExtensions.cs b/src/Exceptionless.AppHost/Extensions/AspireExtensions.cs deleted file mode 100644 index f042d42a7b..0000000000 --- a/src/Exceptionless.AppHost/Extensions/AspireExtensions.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Aspire.Hosting.JavaScript; -using Microsoft.Extensions.Hosting; - -public static class AspireExtensions -{ - // TODO: Remove this once the upstream Aspire bug that attaches a - // SupportsDebuggingAnnotation to JavaScript resources (causing the dashboard - // to surface a non-functional "Debug" command) is fixed. - // See https://github.com/microsoft/aspire/issues/16468 - public static IResourceBuilder RemoveJavaScriptDebuggingAnnotation(this IResourceBuilder resourceBuilder) - where TResource : IResource - { - foreach (var annotation in resourceBuilder.Resource.Annotations - .Where(a => a.GetType().Name == "SupportsDebuggingAnnotation") - .ToArray()) - { - resourceBuilder.Resource.Annotations.Remove(annotation); - } - - return resourceBuilder; - } -} diff --git a/src/Exceptionless.AppHost/Program.cs b/src/Exceptionless.AppHost/Program.cs index a2db8d0d36..51db032edf 100644 --- a/src/Exceptionless.AppHost/Program.cs +++ b/src/Exceptionless.AppHost/Program.cs @@ -17,7 +17,7 @@ int docsPort = worktreePorts?.DocsHttp ?? 7141; const int DefaultApiHttpsPort = 7111; string exceptionlessServerUrl = worktreePorts?.ApiHttpsUrl ?? $"https://api-ex.dev.localhost:{DefaultApiHttpsPort}"; -const string SharedEmailConnectionString = "smtp://localhost:1025"; +const string SharedEmailConnectionString = "smtp://localhost:1026"; var elastic = builder.AddElasticsearch("Elasticsearch", port: 9200) .WithDataVolume("exceptionless.data.v1") @@ -39,7 +39,8 @@ var storageBlobs = storage.AddBlobs("StorageBlobs"); var storageQueues = storage.AddQueues("StorageQueues"); -var cache = builder.AddRedis("Redis", port: 6379) +// Aspire reserves 6380 for Redis's secondary non-TLS endpoint when proxying is disabled. +var cache = builder.AddRedis("Redis", port: 6381) .WithImageTag("8.6") .WithDataVolume("exceptionless.redis.data.v1") .WithEndpointProxySupport(false) @@ -55,10 +56,10 @@ var mail = builder.AddContainer("Mail", "axllent/mailpit") .WithImageTag("v1.27.10") .WithEndpointProxySupport(false) - .WithHttpEndpoint(8025, 8025, "http") + .WithHttpEndpoint(port: 8026, targetPort: 8025, name: "http") .WithUrlForEndpoint("http", u => { u.DisplayText = "Mail"; u.DisplayOrder = 100; }) .WithHttpHealthCheck("/readyz") - .WithEndpoint(1025, 1025) + .WithEndpoint(targetPort: 1025, port: 1026) .WithUrlForEndpoint("tcp", u => u.DisplayLocation = UrlDisplayLocation.DetailsOnly); var ownedElastic = elastic; @@ -85,6 +86,7 @@ cache = cache.WithRedisInsight(b => b .WithLifetime(ContainerLifetime.Persistent) .WithEndpointProxySupport(false) + .WithHostPort(5541) .WithContainerName("Exceptionless-RedisInsight") .WithUrlForEndpoint("http", u => u.DisplayText = "Redis") .WithParentRelationship(ownedCache), containerName: "Redis-insight"); @@ -152,7 +154,6 @@ var oldApp = builder.AddJavaScriptApp("OldApp", "../../src/Exceptionless.Web/ClientApp.angular", "serve") .WithBrowserLogs() .WithReference(api) - .RemoveJavaScriptDebuggingAnnotation() .WithEnvironment("ASPNETCORE_URLS", oldAppAspNetCoreUrls) .WithEnvironment("USE_HTTPS", "true") .WithEnvironment("LIVERELOAD_PORT", oldAppLiveReloadPort.ToString()) @@ -180,7 +181,6 @@ .WithBrowserLogs() .WithReference(api) .WithReference(oldApp) - .RemoveJavaScriptDebuggingAnnotation() .WithEnvironment("PUBLIC_EXCEPTIONLESS_SERVER_URL", exceptionlessServerUrl) .WithEnvironment("PORT", appPort.ToString()) .WithEndpoint("http", e =>