ComposeBuilderDotNet 1.0.4
dotnet add package ComposeBuilderDotNet --version 1.0.4
NuGet\Install-Package ComposeBuilderDotNet -Version 1.0.4
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ComposeBuilderDotNet" Version="1.0.4" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add ComposeBuilderDotNet --version 1.0.4
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: ComposeBuilderDotNet, 1.0.4"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install ComposeBuilderDotNet as a Cake Addin #addin nuget:?package=ComposeBuilderDotNet&version=1.0.4 // Install ComposeBuilderDotNet as a Cake Tool #tool nuget:?package=ComposeBuilderDotNet&version=1.0.4
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
ComposeBuilderDotNet
The Goal
The goal of this project is to generate docker-compose literate YAML in C# using the builder design pattern
About ComposeBuilderDotNet
This project was inspired by The need to create dynamically generated docker-compose files the right way, without using templates and replacement techniques; as well as providing a wide range of developer friendly methods and enums for quick access without the need to constantly check documentation.
Example Code
var dbUser = "root";
var dbPass = "pass";
var dbName = "wordpress";
var network1 = Builder.MakeNetwork("my-net")
.SetExternal(true)
.Build();
var network2 = Builder.MakeNetwork("my-net2")
.Build();
var mysql = Builder.MakeService("db")
.WithImage("mysql:5.7")
.WithNetworks(network1)
.WithExposed("3306")
.WithEnvironment(mb => mb
.WithProperty("MYSQL_ROOT_PASSWORD", dbPass)
.WithProperty("MYSQL_DATABASE", dbName)
.WithProperty("MYSQL_USER", dbUser)
.WithProperty("MYSQL_PASSWORD", dbPass)
)
.WithRestartPolicy(ERestartMode.Always)
.WithSwarm()
.WithDeploy(d => d
.WithMode(EReplicationMode.Replicated)
.WithReplicas(3))
.Build();
var wordpress = Builder.MakeService("wordpress")
.WithImage("wordpress:latest")
.WithNetworks(network1, network2)
.WithPortMapping("8000:80")
.WithEnvironment(mb => mb
.WithProperty("WORDPRESS_DB_HOST", $"{mysql.Name}:3306")
.WithProperty("WORDPRESS_DB_USER", dbUser)
.WithProperty("WORDPRESS_DB_PASSWORD", dbPass)
.WithProperty("WORDPRESS_DB_NAME", dbName)
)
.WithDependencies(mysql)
.WithRestartPolicy(ERestartMode.UnlessStopped)
.WithSwarm()
.WithDeploy(d => d
.WithMode(EReplicationMode.Global)
)
.Build();
var compose = Builder.MakeCompose()
.WithServices(mysql, wordpress)
.WithNetworks(network1, network2)
.Build();
// serialize our object graph to yaml for writing to a docker-compose file
var result = compose.Serialize();
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- YamlDotNet (>= 8.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.