Skoging.Aspire.Hosting.Komodo
0.1.0-alpha.2.2
dotnet add package Skoging.Aspire.Hosting.Komodo --version 0.1.0-alpha.2.2
NuGet\Install-Package Skoging.Aspire.Hosting.Komodo -Version 0.1.0-alpha.2.2
<PackageReference Include="Skoging.Aspire.Hosting.Komodo" Version="0.1.0-alpha.2.2" />
<PackageVersion Include="Skoging.Aspire.Hosting.Komodo" Version="0.1.0-alpha.2.2" />Directory.Packages.props
<PackageReference Include="Skoging.Aspire.Hosting.Komodo" />Project file
paket add Skoging.Aspire.Hosting.Komodo --version 0.1.0-alpha.2.2
#r "nuget: Skoging.Aspire.Hosting.Komodo, 0.1.0-alpha.2.2"
#:package Skoging.Aspire.Hosting.Komodo@0.1.0-alpha.2.2
#addin nuget:?package=Skoging.Aspire.Hosting.Komodo&version=0.1.0-alpha.2.2&prereleaseInstall as a Cake Addin
#tool nuget:?package=Skoging.Aspire.Hosting.Komodo&version=0.1.0-alpha.2.2&prereleaseInstall as a Cake Tool
Skoging.Aspire.Hosting.Komodo
A Komodo deploy target for .NET Aspire:
aspire deploy ships your app's emitted Docker Compose stack to a Komodo server via its API,
aspire publish emits a GitOps-friendly Resource-Sync TOML, and aspire destroy tears the stack
down again. Nothing runs on your local machine.
⚠️ Experimental / alpha. Built on Aspire 13.x
[Experimental]pipeline APIs; pinned to Aspire 13.4, targets net10.0. API will change before 1.0.
builder.AddDockerComposeEnvironment("compose")
.WithKomodoDeploySupport(builder.Configuration.GetSection("Komodo"));
Configure Komodo:CoreUrl, Komodo:ApiKey, Komodo:ApiSecret, Komodo:ServerName
(+ optional StackName, RegistryProvider/RegistryAccount for private images).
Highlights:
- Resource-type-agnostic — deploys whatever compose Aspire emits; depends only on
Aspire.Hosting+Aspire.Hosting.Docker. - Secrets stay out of the stored compose —
.Secretparameters are vaulted as Komodo Variables and injected viacompose_cmd_wrapper(pluggableISecretProvider— implement it to back secrets with an external vault). - Existing-resource family —
PublishAsExisting/RunAsExisting/AsExistingredirect dependents to an already-running instance (e.g. a shared postgres) instead of deploying one. - Join shared external networks —
resource.WithExternalNetwork("name")attaches the emitted compose service to a pre-existing external docker network (a shared collector or database network) and declares itexternal: trueat the top level — no hand-rolledConfigureComposeFile/PublishAsDockerComposeServiceescape hatches. Publish-only; idempotent across many joiners. - Stack-unique internal references — on
aspire publisheach internal service gets a stack-uniquecontainer_nameand its bare-alias references (http://api:8080) are rewritten to match (http://{stack}-api:8080), so stacks sharing an external docker network can never round-robin onto each other's services. Externally-exposed services are left to the ingress provider; no hand-pinned service URLs needed.
Pairs with (but does not depend on) Skoging.Aspire.Hosting.Pangolin for ingress.
Full docs: https://github.com/skoging/aspire-extensions
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Aspire.Hosting (>= 13.4.0)
- Aspire.Hosting.Docker (>= 13.4.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0-alpha.2.2 | 58 | 6/24/2026 |
| 0.1.0-alpha.2.1 | 57 | 6/24/2026 |
| 0.1.0-alpha.2 | 59 | 6/13/2026 |