108 lines
3.3 KiB
Markdown
108 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
|
|
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
|
|
```bash
|
|
ssh docker
|
|
cd /docker/Bruchtal
|
|
git pull
|
|
cd /docker/Bruchtal/<Containername>
|
|
docker compose up -d
|
|
```
|
|
|