Introduced a comprehensive guide on setting up Git-based deployment for the "Zora" server, including environment setup, repository initialization, and deployment workflow. Added `deploy.sh` script to streamline updates and restarts.
3.1 KiB
| type | status | owner | last_update | tags | ||||
|---|---|---|---|---|---|---|---|---|
| Guide | ACTIVE | DevOps Engineer | 2026-03-05 |
|
🚀 Guide: Git-basiertes Deployment auf Zora einrichten
Dieser Guide beschreibt, wie du den Produktions-Server "Zora" so konfigurierst, dass er Updates direkt aus dem Gitea-Repository zieht. Dies stellt sicher, dass nicht nur die Docker-Images, sondern auch die docker-compose.yaml Konfigurationen immer synchron sind.
📋 Voraussetzungen
- SSH-Zugriff auf Zora (
ssh user@10.0.0.xx). gitunddockersind auf Zora installiert.- Ein Gitea-Account mit Zugriff auf das
meldestelleRepository.
🛠️ Schritt-für-Schritt Anleitung
1. Projektverzeichnis vorbereiten
Verbinde dich mit Zora und gehe in das Zielverzeichnis:
ssh user@zora-ip
cd ~/meldestelle
WICHTIG: Falls dort bereits Konfigurationsdateien liegen, erstelle ein Backup:
mkdir -p ../backup_meldestelle_$(date +%F)
cp * ../backup_meldestelle_$(date +%F)/
2. Git-Repository initialisieren
Wir verwandeln den Ordner in ein Git-Repo, das mit Gitea verknüpft ist.
# Git initialisieren
git init
# Remote Origin hinzufügen (HTTPS)
git remote add origin https://git.mo-code.at/mocode-software/meldestelle.git
# Neueste Änderungen holen
git fetch origin
# Hard Reset auf den main-Branch (ACHTUNG: Überschreibt lokale Änderungen!)
git reset --hard origin/main
Jetzt sollten alle dc-*.yaml Dateien und Skripte im Ordner liegen.
3. Environment-Variablen (.env) konfigurieren
Die .env Datei enthält Geheimnisse und wird nicht in Git gespeichert.
-
Kopiere die Vorlage:
cp .env.example .env -
Bearbeite die Datei:
nano .env -
Wichtige Anpassungen für Production:
KC_HOSTNAME=auth.mo-code.atKC_ISSUER_URI=https://auth.mo-code.at/realms/meldestelleKC_JWK_SET_URI=http://keycloak:8080/realms/meldestelle/protocol/openid-connect/certs- Setze starke Passwörter für Datenbank, Keycloak und Grafana!
4. Deployment-Skript einrichten
Das Skript config/scripts/deploy.sh liegt nun im Repo bereit (sobald wir es gepusht haben).
Du kannst es direkt nutzen oder manuell anlegen:
Inhalt von deploy.sh:
#!/bin/bash
# deploy.sh - Update & Restart Meldestelle Stack
echo "🚀 Starte Deployment..."
# 1. Neueste Konfiguration holen
echo " -> Git Pull..."
git pull origin main
# 2. Neue Images laden
echo " -> Docker Pull..."
docker compose pull
# 3. Container neu starten (nur geänderte)
echo " -> Docker Up..."
docker compose up -d --remove-orphans
# 4. Aufräumen
echo " -> Pruning old images..."
docker image prune -f
echo "✅ Deployment erfolgreich!"
Mache das Skript ausführbar:
chmod +x config/scripts/deploy.sh
# Optional: Symlink ins Root
ln -s config/scripts/deploy.sh deploy.sh
🔄 Workflow für Updates
Wenn du Code oder Konfiguration gepusht hast und die CI-Pipeline durchgelaufen ist:
- SSH auf Zora.
cd ~/meldestelle./deploy.sh
Das System ist nun auf dem neuesten Stand!