Nextended.Aspire.Hosting.AspireUI
📚 Vollständige API-Referenz — jeder öffentliche Typ und Member, erzeugt aus der kompilierten Assembly.
AspireUI — der visuelle AppHost-Builder für .NET Aspire — als Ressource im eigenen Aspire-Stack.
▶ Beispielprojekt ansehen — lauffähiger AppHost für diese Integration.
Installation
dotnet add package Nextended.Aspire.Hosting.AspireUIIns AppHost-Projekt.
Schnellstart
var builder = DistributedApplication.CreateBuilder(args);
builder.AddAspireUI()
.WithAdminUser("admin", builder.AddParameter("aspireui-password", secret: true))
.WithSeedStack("Mein Stack", "../MyApi", "../MyWorker");
builder.Build().Run();Der Container ghcr.io/fgilde/aspireui bekommt einen HTTP-Endpunkt und erscheint im Aspire-Dashboard wie jede andere Ressource.
API
| Aufruf | Wirkung |
|---|---|
AddAspireUI(name = "aspireui", port?, image?, tag?) | Fügt den AspireUI-Container hinzu. |
.WithAdminUser(username, password) | Legt den Administrator beim ersten Start an (idempotent, Passwort wird gehasht gespeichert). Nimmt auch eine Aspire-ParameterResource als Passwort. |
.WithSeedStack(name, params projectPaths) | Legt einen Starter-Stack mit je einem AddProject-Knoten pro Pfad an. |
.WithSourceMount(hostPath, containerPath?) | Bindet Quellcode in den Container ein, damit ein angelegter Stack dort auch laufen kann. |
Sicherheit
Docker-Socket
Der eingebundene Docker-Socket gibt dem Container Kontrolle über den Docker-Daemon des Hosts. Betreiben Sie das nur auf einem vertrauenswürdigen Rechner — in der Praxis heißt das: lokale Entwicklung, nicht ein geteilter oder öffentlich erreichbarer Host.
Das Anlegen von Benutzer und Stack passiert nur beim ersten Start. Sobald AspireUI irgendeinen Benutzer kennt, wird das Seeding übersprungen; ein vorhandenes Passwort wird also nicht überschrieben.
Das Passwort sollte über eine Aspire-Parameter-Ressource kommen, nicht als Zeichenkette im Code:
var password = builder.AddParameter("aspireui-password", secret: true);
builder.AddAspireUI().WithAdminUser("admin", password);So landet es nicht im Manifest.
Ausführbares Beispiel
git clone https://github.com/fgilde/Nextended.git
cd Nextended/Tests/TestProjects/AspireUI.AppHost
dotnet runUnterstützte Frameworks
net8.0net9.0net10.0
Abhängigkeiten
Aspire.Hosting.AppHost