3.2 KiB
3.2 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
/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.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
Repository-Struktur
Bruchtal/
├── docker/
│ └── <Containername>/
│ └── docker-compose.yml
└── docs/
└── docker/
└── <Containername>/
└── <Containername>.md