121 lines
3.3 KiB
Markdown
121 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
|
|
```
|
|
/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
|
|
```bash
|
|
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
|
|
│ └── docker-compose.yml
|
|
└── scripts/
|
|
│ └──<.sh>
|
|
|
|
```
|