Skip to content

pardnchiu/go-podrun

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Note

This README was generated by SKILL, get the ZH version from here.

go-podrun

pkg card license version

A CLI tool that syncs local projects to remote servers via rsync/SSH and runs Podman Compose workloads — with a local SQLite deployment registry for container lifecycle tracking.

Table of Contents

Features

UID-Based Deployment Registry

Each container deployment is assigned a unique identifier derived from the local machine's MAC address and project path. This UID is persisted in a local SQLite database, enabling status queries regardless of container runtime availability. Lifecycle states (starting → running → failed → removed) are tracked independently of whether containers are currently running.

Dual Runtime Targeting

The same CLI command can target either Podman Compose (rootless container workloads) or k3s (Kubernetes semantic environments) via the --type flag, eliminating the need to maintain separate toolchains for each runtime.

SSH/rsync Zero-Setup Remote Execution

Local project files are synchronized to the remote server via rsync and compose commands are executed over SSH using sshpass. The remote target machine requires no additional CLI tooling beyond SSH access and a container runtime.

Install

go install github.com/pardnchiu/go-podrun/cmd/cli@latest

Full documentation → doc/doc.md

Architecture

graph LR
    CLI["CLI (Local)"] -->|rsync + SSH| Remote["Remote Server"]
    CLI -->|HTTP POST| API["API Server :8080"]
    API -->|SQLite| DB[(Deployment Registry)]
    Remote -->|Podman Compose| C["Containers"]
    Remote -->|k3s| K["Pods"]
Loading

File Structure

go-podrun/
├── cmd/
│   ├── api/main.go          # API server entry
│   └── cli/main.go          # CLI entry
├── internal/
│   ├── command/             # CLI deploy logic
│   ├── database/            # SQLite operations
│   ├── handler/             # HTTP route handlers
│   ├── model/               # Pod / Record types
│   └── utils/               # SSH, env, IP helpers
├── sql/create.sql           # Schema DDL
└── go.mod

License

This project is licensed under the GNU Affero General Public License v3.0.

Author

邱敬幃 Pardn Chiu

Stars

Star History


©️ 2025 pardnchiu

About

Deploy containers to remote with one command

Topics

Resources

License

Stars

Watchers

Forks

Contributors