release: DockerVault v0.1.0
This commit is contained in:
parent
5954e869c3
commit
2a8d7fc8b7
3 changed files with 105 additions and 95 deletions
189
README.md
189
README.md
|
|
@ -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
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 📜 License
|
|
||||||
|
|
||||||
This project is licensed under the GNU GPL v3.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## ❤️ Credits
|
|
||||||
|
|
||||||
## ❤️ Credits
|
## ❤️ Credits
|
||||||
|
|
||||||
Built with ❤️ for Lanx by [NodeFox 🦊](https://nodefox.lanx.dk)
|
Built with ❤️ for Lanx by [NodeFox 🦊](https://nodefox.lanx.dk)
|
||||||
|
|
||||||
Maintained by [Eddie Nielsen](https://lanx.dk)
|
Maintained by [Eddie Nielsen](https://lanx.dk)
|
||||||
|
|
||||||
Feel free to contribute, suggest improvements, or fork the projec
|
Feel free to contribute, suggest improvements or fork the project.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📜 License
|
||||||
|
|
||||||
|
This project is licensed under the GNU GPL v3.
|
||||||
|
|
|
||||||
|
|
@ -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
0
main
Normal file
Loading…
Add table
Add a link
Reference in a new issue