Skip to content

Glyndor/podup

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

podup

CI Release

podup runs your docker-compose.yml on rootless Podman — a single static binary, written in Rust, with no daemon and no Python runtime.

flowchart LR
	A["docker-compose.yml"] --> B["podup"]
	B -->|"parse · substitute · order"| C["Podman REST API"]
	C --> D["containers"]
	C --> E["networks"]
	C --> F["volumes"]
Loading

✨ Features

  • 🚀 Drop-in workflowup, down, ps, logs, exec, pull, restart, config
  • 🔒 Rootless by design — drives rootless Podman over its Docker-compatible API
  • 📄 Compose-spec parsing — YAML anchors, extends, include, profiles, env_file, variable substitution with modifiers
  • 🔁 Dependency-awaredepends_on ordering with healthcheck conditions
  • 👀 Watch mode — sync, rebuild or restart services on file changes per develop.watch rules
  • 📦 Single binary — statically musl-linked on Linux, no runtime dependencies
  • 🦀 Library too — embed the parser and engine in your own Rust project

📥 Install

curl -fsSL https://github.com/Glyndor/podup/releases/latest/download/install.sh | bash

Binaries for Linux and macOS (x86_64 and arm64) plus Windows (x86_64), SHA-256 verified, with build provenance attestations. On macOS and Windows, podup talks to the podman machine VM through its host-side socket or named pipe. Windows users download podup-windows-x86_64.exe from the releases page directly. Or build from source:

cargo build --release

🚀 Quick start

podup up --detach                      # docker-compose.yml in the current directory
podup -f stack.yml -p myapp up -d      # explicit file and project name
podup ps                               # list project containers
podup logs api --follow                # follow one service's logs
podup down --volumes                   # tear down, removing named volumes

⚖️ vs. alternatives

podup docker-compose podman-compose (Python)
Engine rootless Podman Docker daemon Podman
Runtime single static binary Go binary + Docker daemon Python + pip packages
Root required no typically yes (daemon) no
Implementation Rust Go Python

🦀 Library usage

use podup::{parse_file, podman, Engine};

#[tokio::main]
async fn main() -> podup::Result<()> {
	let file = parse_file(std::path::Path::new("docker-compose.yml"))?;
	let docker = podman::connect(None)?;
	let engine = Engine::new(docker, "myproject".to_string());
	engine.up(&file).await?;
	Ok(())
}
[dependencies]
podup = { git = "https://github.com/Glyndor/podup", tag = "v0.3.0" }

Contributing & security

See the org-wide contributing guide. Report vulnerabilities privately via the Security tab — never in a public issue.

License

Apache-2.0

About

podup — docker-compose translator and runner for rootless Podman. Standalone CLI and Rust library, powers the Glyndor panel.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Sponsor this project

 

Contributors