# Docker-Workflow (Bruchtal Standard) Dieser Workflow ist verbindlich für alle Änderungen an Docker-Stacks in Bruchtal. Ziel: - Keine Konfiguration direkt auf der VM - Alles versioniert in Git - Reproduzierbare Deployments - Dokumentation immer synchron zur Infrastruktur --- ## Grundprinzip **Konfiguration passiert lokal in VS Code.** Die VM ist nur noch Laufzeitumgebung. 1. Lokal ändern, egal was 2. Committen & Pushen 3. der Pull auf der VM wird automatisch über einen Webhook ausgeführt 4. Container neu starten ```mermaid flowchart LR Dev -->|git push| Gitea Gitea -->|POST Hook| Webhook Webhook -->|git pull| Workspace Workspace -->|Markdown changes| MkDocs MkDocs -->|serve| Browser ``` --- ## Verzeichnisstruktur ``` /srv/docker ├─ compose/ # Docker-Compose Stacks für jeden Container │ ├─ nextcloud/ │ │ └─ docker-compose.yml │ ├─ tvheadend/ │ │ └─ docker-compose.yml │ ├─ signal-rest-api/ │ │ └─ docker-compose.yml │ └─ ... (weitere aktive Container) │ ├─ scripts/ # Deploy-Scripts, Webhooks, Utilities │ ├─ deploy-changed-containers-final.sh │ ├─ webhook-deploy.sh │ └─ ... (weitere Scripts) │ ├─ docs/ # MkDocs / Markdown Dokumentation │ ├─ backup_restore │ | ├─ docker | | └─ docker_backup.md | | ├─ hetzner │ ├─ docker │ | ├─ adguardhome | | | └─ adguardhome.md │ | ├─ heimdall | | └─ heimdall.md | | └─ ... (weitere .md Dateien) │ ├─ mkdocs.yml # MkDocs Konfiguration │ ├─ daten/ # Docker-Volumes / persistent data │ ├─ nextcloud/ │ │ ├─ www/ # Nextcloud Webdaten │ │ ├─ db/ # MariaDB Daten │ │ └─ redis/ # Redis Daten │ ├─ tvheadend/ │ │ └─ config/ # TVHeadend config / recordings │ ├─ signal-rest-api/ │ │ └─ data/ │ └─ ... (weitere Container-Daten) │ └─ .gitignore # ignoriert daten/ und ggf. temp files ``` ## Workflow "neuer Container" - VSCode starten in ~Bruchtal mit code . => VS startet sauber mit der Giteinstellung **ALLE ÄNDERUNGEN NUR IN VS** - `compose/` anlegen - `compose//docker-compose.yml` anlegen - docker-compose.yml editieren, - commit mit Message `"infra(): docker-compose.yml neu angelegt"` - push ### neuen Container dokumentieren - `docker/docs/` anlegen - `Bruchtal/docs//.md` anlegen - `.md` editieren, Blaupause z.B: wikijs.md - commit message `docs(): Dokumentation angelegt` - `Bruchtal/mkdocs.md`: nav sinnvoll ergänzen - commit message `docs(mkdocs): ` ergänzt - push ### Übernehmen auf VM Docker ```bash ssh docker cd /docker/Bruchtal git pull cd /docker/Bruchtal/ docker compose up -d ``` ## Repository-Struktur ``` Bruchtal/ ├── docker/ │ └── / │ └── docker-compose.yml └── docs/ │ └── docker/ │ └── / │ │ └── .md │ └── docker-compose.yml └── scripts/ │ └──<.sh> ```