Files
Bruchtal/docs/workflows/docker-workflow.md
2026-03-26 15:31:46 +01:00

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.

  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
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.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

ssh docker
cd /docker/Bruchtal
git pull
cd /docker/Bruchtal/<Containername>
docker compose up -d