# 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 compose, scripts, docs sind im Repo. Daher als Unterordner, damit bei einem pull force die Daten nicht mit überschrieben werden ``` /srv/docker/ ├─ repo │ ├─ 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 ```