Provides extension methods and resource definitions for the Aspire AppHost to support running SeaweedFS containers with flexible API configurations (Native Master/Volume/Filer APIs or an S3-compatible Gateway).
In your AppHost project, install the package using the following command:
dotnet add package CommunityToolkit.Aspire.Hosting.SeaweedFS
Then, in the Program.cs file of AppHost, add a SeaweedFS resource, opt-in to the desired APIs, and consume the connection in your dependent projects:
var builder = DistributedApplication.CreateBuilder(args);
// Example 1: Standard usage enabling the S3-Compatible API Gateway
// Note: Enabling S3 implicitly enables and exposes the Filer API underneath.
var seaweedS3 = builder.AddSeaweedFS("seaweedfs")
.WithS3()
.WithDataVolume();
// Example 2: Native usage enabling only the Filer API (No S3 API running)
var seaweedNative = builder.AddSeaweedFS("seaweed-native")
.WithFiler()
.WithDataVolume();
// Reference the SeaweedFS resource in a project.
var apiService = builder.AddProject<Projects.ApiService>("apiservice")
.WithReference(seaweedS3);
builder.Build().Run();When you use .WithReference(), the hosting library dynamically builds the connection string based on your opt-ins. For instance, if you chained .WithS3(), the connection string will inject the S3 endpoint, credentials, and the explicit FilerEndpoint to be consumed by the Aspire SeaweedFS Client package automatically.
SeaweedFS provides several modular extension methods to configure its container based on your needs:
WithS3(int? s3Port): Enables the SeaweedFS S3-Compatible API Gateway (defaults to target port8333). This implicitly enables the Filer API since it is required by the S3 gateway.WithFiler(int? filerPort): Enables the SeaweedFS Native Filer API (defaults to target port8888) without starting the S3 gateway.WithHostPort(int? port): Configures the explicit host port for the core Master API (defaults to target port9333).
WithAccessKey(IResourceBuilder<ParameterResource> accessKey): Configures a custom Access Key parameter for the S3 identity mapping wrapper.WithSecretKey(IResourceBuilder<ParameterResource> secretKey): Configures a custom Secret Key parameter for the S3 identity mapping wrapper.WithS3ConfigFile(string configFilePath): Overrides the dynamic configuration injection and enforces using a specific custom locals3.jsonconfiguration file mounted directly into the container.
WithDataBindMount(string source, bool isReadOnly): Binds a local host directory to the container's/datafolder to persist your cluster data across restarts.WithDataVolume(string? name, bool isReadOnly): Uses a named Docker volume to persist SeaweedFS cluster data.