Files
Bruchtal/docs/workflows/docker-workflow.md
2026-03-10 23:00:38 +01:00

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.

  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

/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

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