Files

58 lines
1.5 KiB
Markdown

# Home Services
This repository manages home-lab application stacks using compose files and a small Python CLI that works with either Docker or Podman.
## Repository layout
```text
services/
media/
compose.yaml
composectl.py
update_containers.sh
```
- `services/` contains one directory per deployed stack.
- Each stack directory contains its own `compose.yaml` file.
- `composectl.py` infers the stack name, compose file path, and project name from that directory structure.
- `update_containers.sh` is a compatibility shim that delegates to the Python tool.
## Runtime support
The CLI detects and uses whichever runtime is available:
- `docker compose ...`
- `podman compose ...`
This means the same service directories can be managed from either backend without changing the compose files.
## Common commands
From the repository root:
```bash
python3 composectl.py --help
python3 composectl.py --dry-run --all refresh
python3 composectl.py --stack media --dry-run up
python3 composectl.py --stack media pull
python3 composectl.py --stack media down
python3 composectl.py --stack media status
```
The shell entrypoint delegates to the Python tool:
```bash
bash update_containers.sh --dry-run --all refresh
```
## Refresh flow
The repo-wide refresh flow does the following for each configured stack:
1. `pull`
2. `down`
3. `up -d`
4. `prune`
This preserves the same maintenance behavior as the old shell updater, but moves the logic into a portable Python implementation.