3.3 KiB
3.3 KiB
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.
- Lokal ändern, egal was
- Committen & Pushen
- der Pull auf der VM wird automatisch über einen Webhook ausgeführt
- Container neu starten
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/<Containername>anlegen -
compose/<Containername>/docker-compose.ymlanlegen -
docker-compose.yml editieren,
-
commit mit Message
"infra(<Containername>): docker-compose.yml neu angelegt" -
push
neuen Container dokumentieren
docker/docs/<Containername>anlegenBruchtal/docs/<Containername>/<Containername>.mdanlegen<Containername>.mdeditieren, 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
ssh docker
cd /docker/Bruchtal
git pull
cd /docker/Bruchtal/<Containername>
docker compose up -d