Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Common types

Shared configuration types referenced from the manifest sections and resource kinds above.

Command

Container entrypoint override.

Two forms are accepted in the manifest YAML:

  • A single string is interpreted shell-style, equivalent to wrapping the value in sh -c "...". Convenient for one-liners.
  • An array of strings is passed directly to the container runtime as an argument vector, giving precise control over quoting and whitespace.

Used in the command field of [crate::ContainerConfig] and [crate::DockerfileConfig].

ComposeExport

Global overrides for the docker-compose export target.

Nested under [ExportConfig::compose]. All resource keys in resources must reference a name declared in [crate::Manifest::resources], enforced by [crate::Manifest::validate].

FieldTypeRequiredDefaultDescription
resourcesmap of ComposeResourceExportnoPer-resource overrides, keyed by manifest resource name. Resources not listed here receive the default behaviour (included, standard image naming).

ComposeResourceExport

Per-resource overrides for the docker-compose export target.

Used as the value type in [ComposeExport::resources].

FieldTypeRequiredDefaultDescription
enabledbooleannoWhether this resource is included in the export. None or Some(true) includes the resource. Some(false) omits it.

Healthcheck

Per-resource healthcheck configuration.

Field semantics mirror Docker Compose so that existing knowledge transfers directly. Duration fields (interval, timeout, start_period) accept strings like "5s", "200ms", or "2m" and are validated by [crate::Manifest::validate].

A Healthcheck is embedded in [crate::PostgresConfig], [crate::RedisConfig], [crate::ContainerConfig], and [crate::DockerfileConfig] via their healthcheck field, and is also accessible through [crate::ResourceKind::healthcheck].

FieldTypeRequiredDefaultDescription
intervalstringno"5s"Time between consecutive check executions. Default "5s". Accepted suffixes: ns, us, ms, s, m, h.
retriesintegerno5Number of consecutive failures needed to declare the resource unhealthy. Default 5.
start_periodstringno"5s"Grace period at startup during which check failures are not counted toward retries. Default "5s".
testarray of stringyesCommand to run. The first element must be "CMD" or "CMD-SHELL". Cannot be empty (enforced by [crate::Manifest::validate]).
timeoutstringno"3s"Maximum duration a single check execution may take before the runtime treats it as failed. Default "3s".

HelmExport

Global overrides for the Helm chart export target.

Nested under [ExportConfig::helm]. The chart name and version default to the project name and version respectively, resolved by lightshuttle-export during lowering.

FieldTypeRequiredDefaultDescription
chart_namestringnoChart name. Defaults to the project name during lowering.
chart_versionstringnoChart version (SemVer string). Defaults to the project version when set, otherwise "0.1.0".
replicasintegernoDefault replica count exposed via the generated chart’s values.yaml.
resourcesmap of HelmResourceExportnoPer-resource overrides, keyed by manifest resource name.

HelmResourceExport

Per-resource overrides for the Helm chart export target.

Used as the value type in [HelmExport::resources].

FieldTypeRequiredDefaultDescription
enabledbooleannoWhether this resource is included in the chart. None or Some(true) includes the resource. Some(false) omits it.
replicasintegernoReplica count override for this resource, taking precedence over [HelmExport::replicas].

ImagePullPolicy

Kubernetes image pull policy, used in [KubernetesExport] and [KubernetesResourceExport].

Maps directly to the imagePullPolicy field in a Kubernetes Container spec.

KubernetesExport

Global overrides for the raw Kubernetes manifests export target.

Nested under [ExportConfig::kubernetes]. Defaults (namespace, replica count, pull policy) are resolved by lightshuttle-export during lowering.

FieldTypeRequiredDefaultDescription
image_pull_policyImagePullPolicynoDefault image pull policy applied to every resource. See [ImagePullPolicy] for accepted values. Defaults to [ImagePullPolicy::IfNotPresent].
namespacestringnoTarget Kubernetes namespace. Defaults to the project name when absent.
replicasintegernoDefault replica count for every resource that supports it.
resourcesmap of KubernetesResourceExportnoPer-resource overrides, keyed by manifest resource name.

KubernetesResourceExport

Per-resource overrides for the Kubernetes manifests export target.

Used as the value type in [KubernetesExport::resources].

FieldTypeRequiredDefaultDescription
enabledbooleannoWhether this resource is included in the export. None or Some(true) includes the resource. Some(false) omits it.
image_pull_policyImagePullPolicynoImage pull policy override for this specific resource, taking precedence over [KubernetesExport::image_pull_policy].
replicasintegernoReplica count override for this specific resource, taking precedence over [KubernetesExport::replicas].

OtelConfig

Toggle for the bundled OpenTelemetry collector.

Nested under [ObservabilityConfig::otel] in the manifest.

FieldTypeRequiredDefaultDescription
enabledbooleannoWhether the bundled OpenTelemetry collector is active. - None or Some(true): the collector starts and OTLP environment variables are injected into every container. - Some(false): lightshuttle up skips the collector and does not inject any OTLP variables.

PortMapping

Port mapping for a container resource.

Two forms are accepted in the manifest:

  • Integer short form: the runtime mirrors the container port on an identical host port. Example: 8080 maps 0.0.0.0:8080 -> 8080.
  • String full form: supports the "host:container" and "bind_addr:host:container" syntaxes understood by the container runtime. Example: "127.0.0.1:9090:9090".

Used in the ports field of [crate::ContainerConfig] and [crate::DockerfileConfig].

Volume

Volume persistence specification for a managed resource.

Three forms are accepted in the manifest:

  • true (default): the runtime provisions an auto-named volume.
  • false: no volume; the container data directory is ephemeral and lost when lightshuttle down removes the container.
  • A string such as "my-db-data": an explicitly named volume, shared across projects or preserved with a predictable name.

Used in the volume field of [crate::PostgresConfig] and [crate::RedisConfig].