docker-compose-builder - DockerComposeBuilder 0.2.3-nightly0001

The goal of this project is to generate docker-compose literate YAML in C# using the builder design pattern

PM> Install-Package DockerComposeBuilder -Version 0.2.3-nightly0001 -Source https://www.myget.org/F/docker-compose-builder/api/v3/index.json

Copy to clipboard

> nuget.exe install DockerComposeBuilder -Version 0.2.3-nightly0001 -Source https://www.myget.org/F/docker-compose-builder/api/v3/index.json

Copy to clipboard

> dotnet add package DockerComposeBuilder --version 0.2.3-nightly0001 --source https://www.myget.org/F/docker-compose-builder/api/v3/index.json

Copy to clipboard
<PackageReference Include="DockerComposeBuilder" Version="0.2.3-nightly0001" />
Copy to clipboard
source https://www.myget.org/F/docker-compose-builder/api/v3/index.json

nuget DockerComposeBuilder  ~> 0.2.3-nightly0001
Copy to clipboard

> choco install DockerComposeBuilder --version 0.2.3-nightly0001 --source https://www.myget.org/F/docker-compose-builder/api/v2

Copy to clipboard
Import-Module PowerShellGet
Register-PSRepository -Name "docker-compose-builder" -SourceLocation "https://www.myget.org/F/docker-compose-builder/api/v2"
Install-Module -Name "DockerComposeBuilder" -RequiredVersion "0.2.3-nightly0001" -Repository "docker-compose-builder" -AllowPreRelease
Copy to clipboard

Browse the sources in this package using Visual Studio or WinDbg by configuring the following symbol server URL: https://www.myget.org/F/docker-compose-builder/api/v2/symbolpackage/


Build Status NuGet MyGet feedz.io

DockerComposeBuilder

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();

  • .NETFramework 7.0
    • YamlDotNet (>= 13.7.1)
  • .NETStandard 2.0
    • YamlDotNet (>= 13.7.1)
  • .NETFramework 7.0: 7.0.0.0
  • .NETStandard 2.0: 2.0.0.0

Owners

trejbal

Authors

David Dolyniuk, Jan Trejbal

Project URL

https://github.com/aviationexam/docker-compose-builder

License

Unknown

Tags

Docker Docker-Compose Builder

Info

698 total downloads
70 downloads for version 0.2.3-nightly0001
Download (35.07 KB)
Download symbols (42.49 KB)
Found on the current feed only

Package history

Version Size Last updated Downloads Mirrored?
0.2.5-nightly0006 51.05 KB Mon, 11 Dec 2023 11:42:40 GMT 60
0.2.5-nightly0005 51.06 KB Mon, 11 Dec 2023 11:41:06 GMT 52
0.2.5-nightly0003 50.29 KB Tue, 05 Dec 2023 19:55:24 GMT 53
0.2.5-nightly0002 50.31 KB Mon, 20 Nov 2023 12:14:42 GMT 58
0.2.5-nightly0001 50.31 KB Mon, 20 Nov 2023 12:13:24 GMT 64
0.2.4-nightly0002 50.31 KB Wed, 15 Nov 2023 12:07:49 GMT 74
0.2.4-nightly0001 35.64 KB Thu, 09 Nov 2023 13:45:56 GMT 78
0.2.3-nightly0003 35.65 KB Wed, 08 Nov 2023 20:11:15 GMT 68
0.2.3-nightly0002 35.07 KB Fri, 03 Nov 2023 12:15:58 GMT 65
0.2.3-nightly0001 35.07 KB Wed, 01 Nov 2023 19:39:16 GMT 70
0.2.0 45.39 KB Tue, 08 Nov 2022 14:53:04 GMT 56