This commit is contained in:
2026-09-13 17:00:56 +02:00
parent 1709657472
commit 24db4cfbb8
6 changed files with 276 additions and 10 deletions

View File

@@ -33,7 +33,7 @@ The API token is generated in Portainer under **Account → Access tokens**.
|---------|-------------|
| `knecht` | Launch the TUI |
| `knecht list` | Print all stacks with status and drift summary |
| `knecht deploy <stack>` | Deploy a new stack from `services/<stack>/docker-compose.yml` |
| `knecht deploy <stack>` | Deploy a new stack from `services/<stack>/docker-compose.yml`. Env values come from `--from <stack>` and/or `-e KEY=VALUE` (otherwise empty) |
| `knecht update <stack>` | Update an existing stack, preserving Portainer env vars |
| `knecht restart <stack>` | Stop then start a stack |
| `knecht diff <stack>` | Print compose and env key drift |
@@ -41,6 +41,20 @@ The API token is generated in Portainer under **Account → Access tokens**.
`<stack>` always maps to a folder name under `services/`.
### Deploying
`knecht deploy` takes env var *keys* from `.env.example`. Values are empty by default, which
breaks stacks with bind mounts — seed them from an existing stack or pass them explicitly:
```sh
knecht deploy plex --from jellyfin # reuse jellyfin's PUID/PGID/TZ/TV_PATH/MOVIES_PATH
knecht deploy plex --from jellyfin -e TV_PATH=/mnt/external/tv
knecht deploy foo -e API_KEY=abc -e TZ=Europe/Berlin
```
`--from` copies values for keys that also exist in the new stack's `.env.example`; `-e` overrides
afterwards. Any keys still left empty are reported at the end.
## TUI
Run `knecht` with no arguments to launch the interactive TUI.