compose

package
v0.8.0 Latest Latest
Warning

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

Go to latest
Published: Apr 7, 2026 License: MIT Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// ProjectLabel is the label used by Docker Compose to identify project containers.
	ProjectLabel = "com.docker.compose.project"

	// ServiceLabel is the label used by Docker Compose to identify service containers.
	ServiceLabel = "com.docker.compose.service"
)

Variables

This section is empty.

Functions

func LoadProject

func LoadProject(ctx context.Context, paths []string, envFiles []string, extraEnv []string) (*types.Project, error)

LoadProject loads a Docker Compose project from the given file paths and env files. extraEnv provides additional KEY=VALUE variables for ${VAR} substitution; they take precedence over env file values but NOT over process environment variables.

func ProjectName

func ProjectName(workspaceID string) string

ProjectName returns the compose project name for a workspace. It respects the COMPOSE_PROJECT_NAME env var, falling back to "crib-<wsID>".

Types

type Helper

type Helper struct {
	// contains filtered or unexported fields
}

Helper wraps the compose CLI for executing compose commands.

func NewHelper

func NewHelper(runtimeCommand string, logger *slog.Logger) (*Helper, error)

NewHelper detects the compose CLI and returns a Helper. It probes `<runtimeCommand> compose version --short` to verify availability.

func NewHelperFromRuntime

func NewHelperFromRuntime(runtimeCommand string) *Helper

NewHelperFromRuntime creates a Helper with the given runtime command without probing for compose availability. Useful for cases where only the runtime identity is needed (e.g. checking if Podman is in use).

func (*Helper) Build

func (h *Helper) Build(ctx context.Context, projectName string, files []string, services []string, stdout, stderr io.Writer, extraEnv []string) error

Build runs `compose build` for the given project. extraEnv is appended to the subprocess environment for variable substitution.

func (*Helper) BuiltImageName

func (h *Helper) BuiltImageName(projectName, serviceName string) string

BuiltImageName returns the expected image name for a compose-built service. The separator between project and service differs by compose provider: Docker Compose v2 uses "-", podman-compose uses "_".

func (*Helper) Down

func (h *Helper) Down(ctx context.Context, projectName string, files []string, stdout, stderr io.Writer, extraEnv []string, removeVolumes bool) error

Down runs `compose down` for the given project. When removeVolumes is true, named volumes declared in the compose file are also removed. extraEnv is appended to the subprocess environment for variable substitution.

func (*Helper) FindServiceContainerID added in v0.6.1

func (h *Helper) FindServiceContainerID(ctx context.Context, projectName string, files []string, service string, extraEnv []string) (string, error)

FindServiceContainerID returns the container ID for a specific service in a compose project. It uses `compose ps --format json` and matches the service label, which works on both docker compose and podman-compose (unlike `compose ps -q <service>` which podman-compose doesn't support). Returns empty string if the service is not found.

func (*Helper) ListContainers

func (h *Helper) ListContainers(ctx context.Context, projectName string, files []string, extraEnv []string) ([]string, error)

ListContainers returns the container IDs for a compose project. Returns only the IDs without any filtering or parsing.

func (*Helper) ListServiceStatuses added in v0.3.0

func (h *Helper) ListServiceStatuses(ctx context.Context, projectName string, files []string, extraEnv []string) ([]ServiceStatus, error)

ListServiceStatuses returns the status of all services in a compose project. Uses `compose ps --format json` to get service names and states.

func (*Helper) Logs added in v0.5.0

func (h *Helper) Logs(ctx context.Context, projectName string, files []string, follow bool, tail string, stdout, stderr io.Writer, extraEnv []string) error

Logs runs `compose logs` for the given project. extraEnv is appended to the subprocess environment for variable substitution.

func (*Helper) Run

func (h *Helper) Run(ctx context.Context, args []string, stdin io.Reader, stdout, stderr io.Writer, extraEnv []string) error

Run executes a compose command with the given args and I/O streams. extraEnv is appended to the current process environment for the subprocess.

func (*Helper) RuntimeCommand

func (h *Helper) RuntimeCommand() string

RuntimeCommand returns the base runtime command (e.g. "docker" or "podman").

func (*Helper) Start added in v0.6.0

func (h *Helper) Start(ctx context.Context, projectName string, files []string, stdout, stderr io.Writer, extraEnv []string) error

Start runs `compose start` for the given project. Unlike Up, Start only starts existing stopped containers without creating or recreating them. extraEnv is appended to the subprocess environment for variable substitution.

func (*Helper) Stop

func (h *Helper) Stop(ctx context.Context, projectName string, files []string, stdout, stderr io.Writer, extraEnv []string) error

Stop runs `compose stop` for the given project. extraEnv is appended to the subprocess environment for variable substitution.

func (*Helper) Up

func (h *Helper) Up(ctx context.Context, projectName string, files []string, services []string, stdout, stderr io.Writer, extraEnv []string) error

Up runs `compose up -d` for the given project. extraEnv is appended to the subprocess environment for variable substitution.

type PortBinding added in v0.4.0

type PortBinding struct {
	ContainerPort int
	HostPort      int
	HostIP        string
	Protocol      string
}

PortBinding describes a published port mapping for a compose service.

type ServiceInfo

type ServiceInfo struct {
	// Image is the image reference for the service (empty if build-only).
	Image string
	// HasBuild is true when the service has a build section.
	HasBuild bool
	// BuildCtx is the absolute path to the build context directory.
	BuildCtx string
	// Dockerfile is the Dockerfile path (relative to BuildCtx).
	Dockerfile string
	// User is the user directive from the compose service.
	User string
}

ServiceInfo holds extracted service configuration needed for feature builds.

func GetServiceInfo

func GetServiceInfo(ctx context.Context, paths []string, serviceName string, env []string) (*ServiceInfo, error)

GetServiceInfo loads compose files and extracts configuration for the named service. env provides extra environment variables (KEY=VALUE) for ${VAR} substitution in compose files (e.g. localWorkspaceFolder, devcontainerId).

type ServiceStatus added in v0.3.0

type ServiceStatus struct {
	Service string
	State   string
	Ports   []PortBinding
}

ServiceStatus holds the status of a single compose service.

Jump to

Keyboard shortcuts

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