diff --git a/README.md b/README.md index ab0cda8..07d9723 100644 --- a/README.md +++ b/README.md @@ -1,57 +1,146 @@ +

+ +

+ # DockerVault -Early CLI foundation for DockerVault. +> Intelligent Docker backup discovery for real systems -## Current scope +DockerVault scans your Docker environments and figures out **what actually matters to back up** β€” automatically. -- Python CLI project skeleton -- `scan` command -- Recursive discovery of Docker Compose projects -- YAML parsing with `PyYAML` -- Detection of: - - services - - images - - restart policies - - bind mounts - - named volumes - - `env_file` -- JSON or human-readable output +No guesswork. No forgotten volumes. No broken restores. -## Quick start +--- + +## πŸš€ What is DockerVault? + +DockerVault is a CLI tool that: + +* Scans Docker Compose projects +* Parses services, volumes, env files +* Identifies **real data vs noise** +* Builds a structured backup understanding + +Built for people who run real systems β€” not toy setups. + +--- + +## 🧠 Why DockerVault? + +Most backup setups fail because: + +* You forget a volume +* You miss an `.env` file +* You back up cache instead of data +* You don’t know what actually matters + +DockerVault solves this by **thinking like an operator**. + +--- + +## ⚑ Quick Start ```bash +git clone https://git.lanx.dk/ed/dockervault.git +cd dockervault + python3 -m venv .venv source .venv/bin/activate pip install -e . + +dockervault scan /path/to/docker ``` -Run a scan: +--- + +## πŸ” Example ```bash -dockervault scan /path/to/docker/projects +dockervault scan ~/test-docker --json ``` -JSON output: - -```bash -dockervault scan /path/to/docker/projects --json +```json +[ + { + "name": "app2", + "services": [ + { + "name": "app", + "image": "ghcr.io/example/app:latest", + "env_files": [".env"], + "mounts": [ + "./data:/app/data", + "./config:/app/config" + ] + } + ], + "named_volumes": ["app_cache"] + } +] ``` -## What v0.2 adds +--- -DockerVault no longer just finds compose files. -It now builds a first inventory layer that can be used for backup logic later: +## 🧱 Current Features -- project name and root path -- compose files found in the project -- service metadata -- backup candidate paths from bind mounts and env files -- named volumes defined in compose +* CLI interface +* Recursive project scanning +* Docker Compose parsing (YAML) +* Service detection +* Volume + bind mount detection +* Environment file detection -## Example direction +--- -This is meant as the next brick in a bigger flow: +## πŸ”₯ Roadmap -1. Discover Docker app folders -2. Learn what services and data paths exist -3. Later attach backup rules, Borg targets, retention, notifications, and restore metadata +### βœ… Phase 1 – Discovery + +* [x] CLI +* [x] Scan command +* [x] YAML parsing + +### 🚧 Phase 2 – Intelligence + +* [ ] Classify mounts (data / config / cache) +* [ ] Detect backup candidates +* [ ] Generate backup plan + +### πŸ”œ Phase 3 – Storage + +* [ ] SQLite inventory +* [ ] Historical tracking +* [ ] Change detection + +### πŸ”œ Phase 4 – Execution + +* [ ] Borg integration +* [ ] Backup automation +* [ ] Restore validation + +--- + +## 🧠 Philosophy + +DockerVault is built on a simple idea: + +> Backups should be **correct by default** + +Not configurable chaos. + +Not guesswork. + +But **system understanding**. + +--- + +## 🀝 Contributing + +Feel free to contribute, suggest improvements or fork the project. + +--- + +

+Built with ❀️ for Lanx by NodeFox 🦊 +Maintained by Eddie Nielsen +