go-contain

module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 29, 2025 License: MIT

README ΒΆ

go-contain

go-contain brings declarative, dynamic Docker Compose to Go β€” programmatically define, extend, and orchestrate multi-container environments with the flexibility of code, all while staying fully compatible with existing YAML workflows.

Go Version Go Reference

πŸš€ Features

  • Support for Docker Compose commands up, down, logs, (more coming soon!)
  • Declarative container/service creation with chainable options
  • Native Go option setters for containers, networks, volumes, and health checks etc.
  • IDE-friendly
  • Designed for automation, CI/CD pipelines, and advanced dev environments

πŸ“¦ Installation

go get github.com/aptd3v/go-contain@latest

πŸ› οΈ Basic Usage

package main

import (
	"context"
	"log"
	"os"

	"github.com/aptd3v/go-contain/pkg/compose"
	"github.com/aptd3v/go-contain/pkg/compose/options/up"
	"github.com/aptd3v/go-contain/pkg/create"
	"github.com/aptd3v/go-contain/pkg/create/config/cc"
)

func main() {

	project := create.NewProject("my-app")

	project.WithService("my-service",
		create.NewContainer("my-container").
			WithContainerConfig(
				cc.WithImage("alpine:latest"),
				cc.WithCommand("tail", "-f", "/dev/null"),
			),
	)
	//export yaml if desired. (not needed)
	if err := project.Export("./docker-compose.yaml", 0644); err != nil {
		log.Fatal(err)
	}
	//create a new compose instance
	compose := compose.NewCompose(project)

	//execute the up command
	err := compose.Up(
		context.Background(),
		up.WithWriter(os.Stdout),
		up.WithRemoveOrphans(),
		up.WithDetach(),
	)
	if err != nil {
		log.Fatal(err)
	}
}

πŸ”§ Declarative Container Configuration

Each setter type is defined in its own package

project.WithService("api",
	create.NewContainer("my-api:latest").
        WithContainerConfig(
            cc.WithImagef("ubuntu:%s", tag)
        ).
        WithHostConfig(
            hc.WithPortBindings("tcp", "0.0.0.0", "8080", "80"),
        ).
        WithNetworkConfig(
            nc.WithEndpoint("my-network"),
        ).
        WithPlatformConfig(
            pc.WithArchitecture("amd64"),
        ),
)

🧰 tools Package: Declarative Logic for Setters

The tools package provides composable helpers for conditional configuration. These are useful when flags, environment variables, or dynamic inputs control what options get applied.

βœ… Highlights
  • tools.WhenTrue(...) – Apply setters only if a boolean is true
  • tools.WhenTrueFn(...) – Like above, but accepts predicate closure func() bool
  • tools.OnlyIf(...) – Apply a setter only if a runtime check passes func () (bool, error)
  • tools.Group(...) – Combine multiple setters into one func[T any, O ~func(T) error](fns ...O) O
  • tools.And(...), tools.Or(...) – Compose multiple predicate closures
πŸ“¦ Example
package main

import (
	"context"
	"log"
	"os"
	"runtime"

	"github.com/aptd3v/go-contain/pkg/compose"
	"github.com/aptd3v/go-contain/pkg/create"
	"github.com/aptd3v/go-contain/pkg/create/config/cc"
	"github.com/aptd3v/go-contain/pkg/create/config/hc"
	"github.com/aptd3v/go-contain/pkg/create/config/nc"
	"github.com/aptd3v/go-contain/pkg/create/config/sc"
	"github.com/aptd3v/go-contain/pkg/tools"
)

func main() {
	enableDebug := true //imagine this is a flag from your cli or something
	isLinux := runtime.GOOS == "linux"
	project := create.NewProject("conditional-env")
	envVars := tools.Group(
		cc.WithEnv("MYSQL_ROOT_PASSWORD", "password"),
		cc.WithEnv("MYSQL_DATABASE", "mydb"),
		cc.WithEnv("MYSQL_USER", "myuser"),
		cc.WithEnv("MYSQL_PASSWORD", "mypassword"),

		tools.WhenTrueFn(
			tools.Or(enableDebug, os.Getenv("NODE_ENV") == "development"),
			cc.WithEnv("DEBUG", "true"),
		),
	)

	project.WithService("express",
		create.NewContainer("node:latest").
			WithContainerConfig(
				cc.WithImage("node:latest"),
				cc.WithCommand("npm", "start"),
				envVars,
			).
			WithHostConfig(
				tools.WhenTrueElse(isLinux,//if
					hc.WithRWNamedVolumeMount("node-data", "/app"),//true 
					hc.WithVolumeBinds("./:/app/:rw"),//else 
				),
			).
			WithNetworkConfig(
				nc.WithEndpoint("express-network"),
			),
		// service level configuration
		tools.OnlyIf(EnvFileExists(".ThisFileDoesNotExist.env"),
			sc.WithEnvFile(".ThisFileDoesNotExist.env"),
		),
	).
		WithNetwork("express-network").
		WithVolume("node-data")

	compose := compose.NewCompose(project)

	if err := compose.Up(context.Background()); err != nil {
		// will output ThisFileDoesNotExist.env: no such file or directory
		log.Fatal(err)

	}
}
// CheckClosure is just a func() (bool, error)
func EnvFileExists(name string) tools.CheckClosure {
	return func() (bool, error) {
		_, err := os.Stat(name)
		if err != nil {
			return false, err
		}
		return true, nil
	}
}


πŸ§ͺ Advanced Patterns

  • Programmatically build services, networks, and volumes using loops
  • Reuse options via functional composition
  • Create declarative DSLs for internal infrastructure automation

πŸ“ Project Structure (Current)

β”œβ”€β”€ examples
β”‚   └── wordpress
β”‚       β”œβ”€β”€ main.go
β”‚       └── README.md #example
β”œβ”€β”€ go.mod
β”œβ”€β”€ go.sum
β”œβ”€β”€ LICENSE
β”œβ”€β”€ main.go
β”œβ”€β”€ pkg
β”‚   β”œβ”€β”€ client
β”‚   β”‚   β”œβ”€β”€ auth
β”‚   β”‚   β”‚   └── auth.go # image registry auth 
β”‚   β”‚   β”œβ”€β”€ client.go # docker sdk client
β”‚   β”‚   β”œβ”€β”€ container.go
β”‚   β”‚   β”œβ”€β”€ image.go
β”‚   β”‚   β”œβ”€β”€ network.go
β”‚   β”‚   β”œβ”€β”€ options # docker sdk client [action] option setters
β”‚   β”‚   β”‚   β”œβ”€β”€ container
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ attach
β”‚   β”‚   β”‚   β”‚   β”‚   └── attach.go
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ checkpointcreate
β”‚   β”‚   β”‚   β”‚   β”‚   └── checkpointcreate.go
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ checkpointdelete
β”‚   β”‚   β”‚   β”‚   β”‚   └── checkpointdelete.go
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ checkpointlist
β”‚   β”‚   β”‚   β”‚   β”‚   └── checkpointlist.go
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ commit
β”‚   β”‚   β”‚   β”‚   β”‚   └── commit.go
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ copyto
β”‚   β”‚   β”‚   β”‚   β”‚   └── copyto.go
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ exec
β”‚   β”‚   β”‚   β”‚   β”‚   └── exec.go
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ execattach
β”‚   β”‚   β”‚   β”‚   β”‚   └── execattach.go
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ execresize
β”‚   β”‚   β”‚   β”‚   β”‚   └── execresize.go
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ execstart
β”‚   β”‚   β”‚   β”‚   β”‚   └── execstart.go
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ list
β”‚   β”‚   β”‚   β”‚   β”‚   └── list.go
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ logs
β”‚   β”‚   β”‚   β”‚   β”‚   └── logs.go
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ prune
β”‚   β”‚   β”‚   β”‚   β”‚   └── prune.go
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ remove
β”‚   β”‚   β”‚   β”‚   β”‚   └── remove.go
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ start
β”‚   β”‚   β”‚   β”‚   β”‚   └── start.go
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ stop
β”‚   β”‚   β”‚   β”‚   β”‚   └── stop.go
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ update
β”‚   β”‚   β”‚   β”‚   β”‚   └── update.go
β”‚   β”‚   β”‚   β”‚   └── wait
β”‚   β”‚   β”‚   β”‚       └── wait.go
β”‚   β”‚   β”‚   β”œβ”€β”€ image
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ build
β”‚   β”‚   β”‚   β”‚   β”‚   └── build.go
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ create
β”‚   β”‚   β”‚   β”‚   β”‚   └── create.go
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ imports
β”‚   β”‚   β”‚   β”‚   β”‚   └── imports.go
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ list
β”‚   β”‚   β”‚   β”‚   β”‚   └── list.go
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ load
β”‚   β”‚   β”‚   β”‚   β”‚   └── load.go
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ prune
β”‚   β”‚   β”‚   β”‚   β”‚   └── prune.go
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ pull
β”‚   β”‚   β”‚   β”‚   β”‚   └── pull.go
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ remove
β”‚   β”‚   β”‚   β”‚   β”‚   └── remove.go
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ save
β”‚   β”‚   β”‚   β”‚   β”‚   └── save.go
β”‚   β”‚   β”‚   β”‚   └── search
β”‚   β”‚   β”‚   β”‚       └── search.go
β”‚   β”‚   β”‚   β”œβ”€β”€ network
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ connect
β”‚   β”‚   β”‚   β”‚   β”‚   └── connect.go
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ create
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ create.go
β”‚   β”‚   β”‚   β”‚   β”‚   └── ipam
β”‚   β”‚   β”‚   β”‚   β”‚       β”œβ”€β”€ ipamconfig
β”‚   β”‚   β”‚   β”‚   β”‚       β”‚   └── ipamconfig.go
β”‚   β”‚   β”‚   β”‚   β”‚       └── ipam.go
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ inspect
β”‚   β”‚   β”‚   β”‚   β”‚   └── inspect.go
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ list
β”‚   β”‚   β”‚   β”‚   β”‚   └── list.go
β”‚   β”‚   β”‚   β”‚   └── prune
β”‚   β”‚   β”‚   β”‚       └── prune.go
β”‚   β”‚   β”‚   └── volume
β”‚   β”‚   β”‚       β”œβ”€β”€ create
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ clusterspec
β”‚   β”‚   β”‚       β”‚   β”‚   β”œβ”€β”€ accessibility
β”‚   β”‚   β”‚       β”‚   β”‚   β”‚   └── accessibility.go
β”‚   β”‚   β”‚       β”‚   β”‚   β”œβ”€β”€ accessmode
β”‚   β”‚   β”‚       β”‚   β”‚   β”‚   └── accessmode.go
β”‚   β”‚   β”‚       β”‚   β”‚   └── clusterspec.go
β”‚   β”‚   β”‚       β”‚   └── create.go
β”‚   β”‚   β”‚       β”œβ”€β”€ list
β”‚   β”‚   β”‚       β”‚   └── list.go
β”‚   β”‚   β”‚       β”œβ”€β”€ prune
β”‚   β”‚   β”‚       β”‚   └── prune.go
β”‚   β”‚   β”‚       └── update
β”‚   β”‚   β”‚           └── update.go
β”‚   β”‚   β”œβ”€β”€ response
β”‚   β”‚   β”‚   └── response.go # wrapped client response types
β”‚   β”‚   └── volumes.go
β”‚   β”œβ”€β”€ compose
β”‚   β”‚   β”œβ”€β”€ api.go
β”‚   β”‚   β”œβ”€β”€ compose.go
β”‚   β”‚   β”œβ”€β”€ errors.go
β”‚   β”‚   └── options # compose cli option setters
β”‚   β”‚       β”œβ”€β”€ down
β”‚   β”‚       β”‚   └── down.go
β”‚   β”‚       β”œβ”€β”€ logs
β”‚   β”‚       β”‚   └── logs.go
β”‚   β”‚       └── up
β”‚   β”‚           └── up.go
β”‚   β”œβ”€β”€ create
β”‚   β”‚   β”œβ”€β”€ config
β”‚   β”‚   β”‚   β”œβ”€β”€ cc # container config setters
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ cc.go
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ health
β”‚   β”‚   β”‚   β”‚   β”‚   └── health.go
β”‚   β”‚   β”‚   β”‚   └── health.go
β”‚   β”‚   β”‚   β”œβ”€β”€ hc # container host config setters
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ capabilities.go
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ hc.go
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ log.go
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ mount
β”‚   β”‚   β”‚   β”‚   β”‚   └── mount.go
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ mount.go
β”‚   β”‚   β”‚   β”‚   └── restart_policy.go
β”‚   β”‚   β”‚   β”œβ”€β”€ nc # container network config setters
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ endpoint
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ endpoint.go
β”‚   β”‚   β”‚   β”‚   β”‚   └── ipam
β”‚   β”‚   β”‚   β”‚   β”‚       └── ipam.go
β”‚   β”‚   β”‚   β”‚   └── nc.go
β”‚   β”‚   β”‚   β”œβ”€β”€ pc # container platform config setters
β”‚   β”‚   β”‚   β”‚   └── pc.go
β”‚   β”‚   β”‚   └── sc # compose service setters
β”‚   β”‚   β”‚       β”œβ”€β”€ build
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ build.go
β”‚   β”‚   β”‚       β”‚   └── ulimit
β”‚   β”‚   β”‚       β”‚       └── ulimit.go
β”‚   β”‚   β”‚       β”œβ”€β”€ deploy
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ deploy.go
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ resource
β”‚   β”‚   β”‚       β”‚   β”‚   β”œβ”€β”€ device
β”‚   β”‚   β”‚       β”‚   β”‚   β”‚   └── device.go
β”‚   β”‚   β”‚       β”‚   β”‚   └── resource.go
β”‚   β”‚   β”‚       β”‚   └── update
β”‚   β”‚   β”‚       β”‚       └── update.go
β”‚   β”‚   β”‚       β”œβ”€β”€ network
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ network.go
β”‚   β”‚   β”‚       β”‚   └── pool
β”‚   β”‚   β”‚       β”‚       └── pool.go
β”‚   β”‚   β”‚       β”œβ”€β”€ sc.go
β”‚   β”‚   β”‚       β”œβ”€β”€ secrets
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ projectsecret
β”‚   β”‚   β”‚       β”‚   β”‚   └── projectsecret.go
β”‚   β”‚   β”‚       β”‚   └── secretservice
β”‚   β”‚   β”‚       β”‚       └── secretservice.go
β”‚   β”‚   β”‚       └── volume
β”‚   β”‚   β”‚           └── volume.go
β”‚   β”‚   β”œβ”€β”€ container.go # create container compatible with sdk wrapper & compose wrapper
β”‚   β”‚   β”œβ”€β”€ errors.go
β”‚   β”‚   └── service.go
β”‚   └── tools
β”‚       └── tools.go # various helpers
└── README.md # this file

83 directories, 92 files

πŸ“ YAML Export & Compatibility

go-contain lets you export your programmatically defined Compose projects as standard Docker Compose YAML files. These exported YAML files are fully compatible with the traditional Docker Compose CLI and ecosystem.

This means you can:

  • Use docker compose up, docker compose down, and other Docker Compose commands directly on the exported YAML.
  • Share the exported YAML with teams or CI pipelines that rely on standard Docker Compose workflows.

Example:

if err := project.Export("./docker-compose.yaml", 0644); err != nil {
	log.Fatal(err)
}

You can then run:

docker compose up -d

to start your services exactly as defined by your Go code.

This design ensures maximum flexibility and compatibility, letting you leverage the power of Go while staying aligned with Docker Compose standards.

πŸ“„ License

MIT License. See LICENSE for details.


🀝 Contributions

Contributions, feedback, and issues are welcome! Fork the repo and submit a PR or open an issue with your idea.

Directories ΒΆ

Path Synopsis
examples
wordpress command
pkg
client/options/container/attach
package attach provides options for the container attach.
package attach provides options for the container attach.
client/options/container/checkpointcreate
package checkpointcreate provides options for the container checkpoint create.
package checkpointcreate provides options for the container checkpoint create.
client/options/container/checkpointdelete
package checkpointdelete provides options for the container checkpoint delete.
package checkpointdelete provides options for the container checkpoint delete.
client/options/container/checkpointlist
package checkpointlist provides options for the container checkpoint list.
package checkpointlist provides options for the container checkpoint list.
client/options/container/commit
package commit provides options for the container commit.
package commit provides options for the container commit.
client/options/container/copyto
package copyto provides options for the container copy to container.
package copyto provides options for the container copy to container.
client/options/container/exec
package exec provides options for the container exec.
package exec provides options for the container exec.
client/options/container/execattach
package execattach provides options for the container exec attach.
package execattach provides options for the container exec attach.
client/options/container/execresize
package execresize provides options for the container exec resize.
package execresize provides options for the container exec resize.
client/options/container/execstart
package execstart provides options for the container exec start.
package execstart provides options for the container exec start.
client/options/container/list
Package list provides the options for the container list options
Package list provides the options for the container list options
client/options/container/logs
package logs provides options for the container logs.
package logs provides options for the container logs.
client/options/container/prune
package prune provides options for the container prune.
package prune provides options for the container prune.
client/options/container/remove
Package remove provides the options for the container remove options
Package remove provides the options for the container remove options
client/options/container/start
Package start provides the options for the container start options
Package start provides the options for the container start options
client/options/container/stop
Package stop provides the options for the container stop options
Package stop provides the options for the container stop options
client/options/container/update
package update provides options for the container update.
package update provides options for the container update.
client/options/container/wait
Package wait provides options for container wait.
Package wait provides options for container wait.
client/options/image/build
package build provides options for the image build.
package build provides options for the image build.
client/options/image/create
package create provides options for the image create.
package create provides options for the image create.
client/options/image/imports
Package imports provides options for image import.
Package imports provides options for image import.
client/options/image/list
package list provides options for the image list.
package list provides options for the image list.
client/options/image/load
Package load provides options for image load.
Package load provides options for image load.
client/options/image/prune
Package prune provides options for image prune.
Package prune provides options for image prune.
client/options/image/pull
package pull provides options for the image pull.
package pull provides options for the image pull.
client/options/image/remove
Package remove provides options for image remove.
Package remove provides options for image remove.
client/options/image/save
Package save provides options for image save.
Package save provides options for image save.
client/options/image/search
Package search provides options for image search.
Package search provides options for image search.
client/options/network/connect
package connect provides options for the network connect.
package connect provides options for the network connect.
client/options/network/create
package create provides options for the network create.
package create provides options for the network create.
client/options/network/create/ipam
package ipam provides options for the network IPAM.
package ipam provides options for the network IPAM.
client/options/network/create/ipam/ipamconfig
package ipamconfig provides options for the network IPAM config.
package ipamconfig provides options for the network IPAM config.
client/options/network/inspect
package inspect provides options for the network inspect.
package inspect provides options for the network inspect.
client/options/network/list
package list provides options for the network list.
package list provides options for the network list.
client/options/network/prune
package prune provides options for the network prune.
package prune provides options for the network prune.
client/options/volume/create
package create provides options for the volume create.
package create provides options for the volume create.
client/options/volume/create/clusterspec
package clusterspec provides options for the volume cluster volume spec.
package clusterspec provides options for the volume cluster volume spec.
client/options/volume/create/clusterspec/accessibility
package accessibility provides options for the volume cluster volume spec accessibility requirements.
package accessibility provides options for the volume cluster volume spec accessibility requirements.
client/options/volume/create/clusterspec/accessmode
package accessmode provides options for the volume cluster volume spec access mode.
package accessmode provides options for the volume cluster volume spec access mode.
client/options/volume/list
Package list provides options for volume list operations.
Package list provides options for volume list operations.
client/options/volume/prune
Package vpo provides options for volume prune operations.
Package vpo provides options for volume prune operations.
client/options/volume/update
Package vuo provides options for volume update operations.
Package vuo provides options for volume update operations.
client/response
Package response provides thin wrappers around the docker client response types.
Package response provides thin wrappers around the docker client response types.
compose
package compose is a wrapper around the docker compose cli.
package compose is a wrapper around the docker compose cli.
compose/options/down
Package down is the package for the compose down options
Package down is the package for the compose down options
compose/options/logs
Package logs is the package for the compose logs options
Package logs is the package for the compose logs options
compose/options/up
Package up provides options for the compose up command
Package up provides options for the compose up command
create
Package create provides the container config for the wrapped client.
Package create provides the container config for the wrapped client.
create/config/cc
Package cc provides the options for the container config.
Package cc provides the options for the container config.
create/config/hc
Package hc provides the options for the host config.
Package hc provides the options for the host config.
create/config/hc/mount
Package mount provides the options for the mount config in the host config.
Package mount provides the options for the mount config in the host config.
create/config/nc
Package nc provides the options for the network config.
Package nc provides the options for the network config.
create/config/nc/endpoint
Package endpoint provides the options for the endpoint config in the network config.
Package endpoint provides the options for the endpoint config in the network config.
create/config/nc/endpoint/ipam
Package ipam provides the options for the IPAM config in the endpoint config.
Package ipam provides the options for the IPAM config in the endpoint config.
create/config/pc
Package pc provides the options for the platform config.
Package pc provides the options for the platform config.
create/config/sc
Package sc provides functions to set the service config
Package sc provides functions to set the service config
create/config/sc/build
Package build provides functions to set the build config for a service
Package build provides functions to set the build config for a service
create/config/sc/build/ulimit
Package ulimit provides a set of functions to configure the ulimits for the build
Package ulimit provides a set of functions to configure the ulimits for the build
create/config/sc/deploy
Package deploy provides functions to set the deploy configuration for a service
Package deploy provides functions to set the deploy configuration for a service
create/config/sc/deploy/resource
Package resource provides functions to set the resource configuration for a service deploy
Package resource provides functions to set the resource configuration for a service deploy
create/config/sc/deploy/resource/device
Package device provides functions to set the device configuration for a service deploys resource
Package device provides functions to set the device configuration for a service deploys resource
create/config/sc/deploy/update
Package update provides functions to set the update configuration for a service deploy
Package update provides functions to set the update configuration for a service deploy
create/config/sc/network
Package network provides functions to set the network configuration for a project
Package network provides functions to set the network configuration for a project
create/config/sc/network/pool
Package pool provides functions to set the ipam pool configuration for a project
Package pool provides functions to set the ipam pool configuration for a project
create/config/sc/secrets/projectsecret
Package projectsecret provides a set of functions to configure the secret for the project
Package projectsecret provides a set of functions to configure the secret for the project
create/config/sc/secrets/secretservice
Package secretservice provides a set of functions to configure the secrets for the service
Package secretservice provides a set of functions to configure the secrets for the service
create/config/sc/volume
Package volume provides functions to set the volume configuration for a project
Package volume provides functions to set the volume configuration for a project
tools
Package tools provides various helpers for writing declarative option setters.
Package tools provides various helpers for writing declarative option setters.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL