Deploy Podman¶
Deploy Podman — mvp.deploy_podman
Cluster: Core Infrastructure | Type: component | MCP Tools: None
Overview¶
Rootless container runtime implementation backed by the podman CLI. Shares the same DockerInput schema as deploy_docker and extends DockerRuntime, making it a drop-in replacement for environments where rootless or daemonless containers are required — such as edge nodes, CI runners without Docker daemon access, or SELinux-hardened servers.
When to use:
- Running G6 base containers in rootless mode on RHEL/Fedora or any daemonless host
- Swapping Docker for Podman in the
cicdpipeline by settingruntime = "podman" - Building and pushing OCI-compatible images without a Docker daemon
Low-level deployment primitive
deploy_podman is a runtime adapter, not a complete first-user deployment experience. It is useful when an operator or higher-level pipeline already knows the image, ports, environment variables, registry, and health-check flow. For the launch-plan goal of helping a non-technical user get value in under 10 minutes, wrap this component in a guided quick-start command or the cicd pipeline rather than exposing raw DockerInput construction as the primary path.
Example:
from mvp.deploy_podman import DockerInput, PodmanBlock
from mvp.deploy_core.schema import ImageSpec
block = PodmanBlock(name="podman")
result = block.infer(DockerInput(
op="build",
image=ImageSpec(name="g6-rest", tag="dev"),
context_dir=".",
))
# result.ok → True; result.value.stage → "build"
For staging or production on a single VPS, set production_mode=True when running a container. This keeps host ports stable, assigns a container name, and fails fast on conflicts instead of silently remapping a public service port.
Works well with: deploy_docker, deploy_core, cicd
Public API¶
PodmanBlock(AIBlock[DockerInput | PodmanInput, DeployResult, None])¶
AIBlock that delegates to PodmanRuntime based on input.op.
| Field | Type | Default |
|---|---|---|
name | str | 'podman' |
Methods:
infer(data: DockerInput | PodmanInput) -> Result[DeployResult]¶
PodmanRuntime(DockerRuntime)¶
ContainerRuntime implementation using the podman CLI.
Constructor:
| Parameter | Type | Default |
|---|---|---|
dry_run | bool | False |
command_runner | Callable[[list[str]], tuple[int, str, str]] \| None | None |
Methods:
capabilities() -> dict[str, Any]¶
Discover read-only Podman capabilities without mutating host state.
PodmanInput(DockerInput)¶
| Field | Type | Default |
|---|---|---|
op | PodmanOp | required |
privileged | bool | False |
network_mode | str | '' |
userns | str | '' |
selinux_label | str | '' |
pod_name | str | '' |
quadlet_unit | str | '' |
restart_policy | str | '' |
container_name | str | '' |
request_id | str | '' |
task_id | str | '' |
run_id | str | '' |
Dependencies¶
mvp.deploy_docker