release: DockerVault v0.1.0

This commit is contained in:
Eddie Nielsen 2026-03-24 14:42:26 +00:00
parent 5954e869c3
commit 2a8d7fc8b7
3 changed files with 105 additions and 95 deletions

195
README.md
View file

@ -6,7 +6,7 @@
> Intelligent Docker backup discovery for real systems > Intelligent Docker backup discovery for real systems
DockerVault scans your Docker environments and figures out what actually matters to back up — automatically. DockerVault scans your Docker environments and figures out **what actually matters to back up** — automatically.
No guesswork. No forgotten volumes. No broken restores. No guesswork. No forgotten volumes. No broken restores.
@ -20,169 +20,184 @@ No guesswork. No forgotten volumes. No broken restores.
* 🗂 Classification Model * 🗂 Classification Model
* 💾 Borg Integration * 💾 Borg Integration
* 🤖 Automation Mode * 🤖 Automation Mode
* 🔢 Exit Codes
* 🛠 Tech Stack
* 🔍 Example * 🔍 Example
* 🛠 Tech Stack
* 🔢 Exit Codes
* 🔥 Future Ideas * 🔥 Future Ideas
* 📜 License
* ❤️ Credits * ❤️ Credits
* 📜 License
--- ---
## 🚀 What is DockerVault? ## 🚀 What is DockerVault?
DockerVault is a CLI tool that scans Docker environments and determines what actually needs to be backed up. DockerVault is a CLI tool that:
It understands: * scans Docker Compose environments
- Docker Compose setups * detects bind mounts and named volumes
- bind mounts * identifies **critical data paths**
- named volumes * warns about missing or broken setups
- service-specific data paths * generates **ready-to-use Borg backup commands**
Instead of guessing, DockerVault builds a structured backup plan. It focuses on **real-world setups**, not theoretical configs.
--- ---
## ⚡ Quick Start ## ⚡ Quick Start
```bash
git clone https://git.lanx.dk/ed/dockervault.git git clone https://git.lanx.dk/ed/dockervault.git
cd dockervault cd dockervault
python -m venv .venv
source .venv/bin/activate
python -m dockervault.cli scan /your/docker/root --repo /backup pip install -r requirements.txt
```
Run a scan:
```bash
python -m dockervault.cli /path/to/docker
```
Generate a Borg backup plan:
```bash
python -m dockervault.cli /path/to/docker --repo /backup --dry-run
```
--- ---
## 🧠 How it Works ## 🧠 How it Works
DockerVault works in layers: DockerVault:
1. Scan for docker-compose.yml 1. Searches for Docker Compose files
2. Parse services and volumes 2. Parses all services and mounts
3. Resolve: 3. Applies classification rules
- bind mounts 4. Builds a structured backup plan
- named volumes
4. Classify paths: It focuses on **what actually matters to restore a system**.
- critical
- review
- skip
5. Generate backup plan
--- ---
## 🗂 Classification Model ## 🗂 Classification Model
DockerVault sorts paths into: DockerVault divides data into:
### INCLUDE (critical) ### 🔴 Critical
Must be backed up
Examples: Must be backed up:
- /var/lib/mysql
- /data
--- * databases (`/var/lib/mysql`, etc.)
* application data (`/data`, etc.)
### REVIEW ### 🟡 Review
Needs human decision
Examples: Optional:
- uploads
- config folders
--- * logs
* caches
* temporary files
### SKIP ### ⚪ Skip
Safe to ignore
Examples: Safe to ignore:
- logs
- cache * ephemeral runtime data
- temp data
--- ---
## 💾 Borg Integration ## 💾 Borg Integration
DockerVault can generate ready-to-use Borg commands: DockerVault generates ready-to-use Borg commands:
```bash
borg create --stats --progress \ borg create --stats --progress \
/backup-repo::{hostname}-{now:%Y-%m-%d_%H-%M} \ /backup::hostname-YYYY-MM-DD_HH-MM \
/path1 \ /path1 \
/path2 /path2
```
This makes it easy to plug into: No guessing. No missing volumes.
- cron jobs
- scripts
- automation pipelines
--- ---
## 🤖 Automation Mode ## 🤖 Automation Mode
python -m dockervault.cli scan /path --automation --quiet DockerVault supports automation-friendly usage:
Designed for: ```bash
- scheduled backups python -m dockervault.cli /path --repo /backup --automation --quiet
- CI/CD pipelines ```
- unattended systems
--- * exit code `0` → OK
* exit code `1` → missing critical paths
## 🔢 Exit Codes Perfect for cron jobs and monitoring.
0 = Success
1 = Missing critical paths
2 = General error
---
## 🛠 Tech Stack
- Python 3
- Docker Compose parsing
- Filesystem analysis
- Borg backup integration
- pytest (testing)
--- ---
## 🔍 Example ## 🔍 Example
```text
DockerVault Backup Plan DockerVault Backup Plan
======================= =======================
Scan root: /srv/docker
INCLUDE PATHS: INCLUDE PATHS:
- ./db [critical] - /srv/docker/db [critical] service=db target=/var/lib/mysql
- ./mc [critical] - /srv/docker/app/data [critical] service=app target=/data
REVIEW PATHS:
- /srv/docker/logs [optional]
WARNING: Missing critical paths detected WARNING: Missing critical paths detected
- ./db (service=db) - /srv/docker/app/data (service=app)
```
---
## 🛠 Tech Stack
* Python 3.10+
* Docker Compose parsing
* Custom classification engine
* Borg backup integration
---
## 🔢 Exit Codes
| Code | Meaning |
| ---- | ---------------------------------------- |
| 0 | Success |
| 1 | Missing critical paths (automation mode) |
| 2 | Error / invalid input |
--- ---
## 🔥 Future Ideas ## 🔥 Future Ideas
- Notifications (mail, ntfy) * JSON output (`--json`)
- Web interface * Web UI
- Backup reports * Email / ntfy notifications
- Restore validation * Restore validation
- smarter classification engine * Smarter service detection
- Docker API integration * Backup manifests
---
## ❤️ Credits
Built with ❤️ for Lanx by [NodeFox 🦊](https://nodefox.lanx.dk)
Maintained by [Eddie Nielsen](https://lanx.dk)
Feel free to contribute, suggest improvements or fork the project.
--- ---
## 📜 License ## 📜 License
This project is licensed under the GNU GPL v3. This project is licensed under the GNU GPL v3.
---
## ❤️ Credits
## ❤️ Credits
Built with ❤️ for Lanx by [NodeFox 🦊](https://nodefox.lanx.dk)
Maintained by [Eddie Nielsen](https://lanx.dk)
Feel free to contribute, suggest improvements, or fork the projec

View file

@ -1,5 +0,0 @@
M# Changelog
All notable changes to this project will be documented in this file.
## [0.1.0

0
main Normal file
View file