Files
Bruchtal/docs/workflows/docker-workflow.md
2026-03-12 19:17:41 +01:00

121 lines
3.3 KiB
Markdown

# 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/<Containername>` anlegen
- `compose/<Containername>/docker-compose.yml` anlegen
- docker-compose.yml editieren,
- commit mit Message `"infra(<Containername>): docker-compose.yml neu angelegt"`
- push
### neuen Container dokumentieren
- `docker/docs/<Containername>` anlegen
- `Bruchtal/docs/<Containername>/<Containername>.md` anlegen
- `<Containername>.md` editieren, Blaupause z.B: wikijs.md
- commit message `docs(<Containername>): Dokumentation angelegt`
- `Bruchtal/mkdocs.md`: nav sinnvoll ergänzen
- commit message `docs(mkdocs): <Containername>` ergänzt
- push
### Übernehmen auf VM Docker
```bash
ssh docker
cd /docker/Bruchtal
git pull
cd /docker/Bruchtal/<Containername>
docker compose up -d
```
## Repository-Struktur
```
Bruchtal/
├── docker/
│ └── <Containername>/
│ └── docker-compose.yml
└── docs/
│ └── docker/
│ └── <Containername>/
│ │ └── <Containername>.md
│ └── docker-compose.yml
└── scripts/
│ └──<.sh>
```