5.9 KiB
5.9 KiB
Deployment Anleitung - Werte Next.js App
Voraussetzungen
Auf dem Server benötigt:
- Docker (Version 20.10+)
- Docker Compose (Version 2.0+)
- MySQL Server (bereits installiert und laufend)
- RXF Datenbank mit Tabelle Werte_BZG muss bereits existieren
Deployment Schritte
1. Projekt auf den Server übertragen
# Auf dem Server ein Verzeichnis erstellen
mkdir -p /opt/werte-next
cd /opt/werte-next
# Projekt per Git oder rsync übertragen
# Option A: Git
git clone <repository-url> .
# Option B: rsync (von lokalem Rechner aus)
rsync -av --exclude 'node_modules' --exclude '.next' \
/Users/rxf/REXFUE_APPS/werte_next/ user@server:/opt/werte-next/
2. Umgebungsvariablen konfigurieren
# .env-Datei aus Beispiel erstellen
cp .env.example .env
# .env-Datei mit Ihren Zugangsdaten bearbeiten
nano .env
Passen Sie die Werte in der .env-Datei an:
DB_USER=root
DB_PASS=IhrMySQLPasswort
DB_NAME=RXF
Wichtig: Die .env-Datei enthält sensible Daten und wird NICHT ins Git-Repository committed!
3. Docker Images bauen und Container starten
cd /opt/werte-next
# Images bauen und Container im Hintergrund starten
docker-compose up -d --build
4. Container-Status prüfen
# Container-Status anzeigen
docker-compose ps
# Logs anschauen
docker-compose logs -f werte-app
5. Datenbank prüfen
# Direkt auf Host-MySQL verbinden
mysql -uroot -p<IhrPasswort> RXF
# Tabelle prüfen
SHOW TABLES;
DESCRIBE Werte_BZG;
SELECT COUNT(*) FROM Werte_BZG;
# Oder von außen (falls MySQL externen Zugriff erlaubt)
mysql -h <server-ip> -uroot -p<IhrPasswort> RXF
6. Anwendung im Browser öffnen
http://<server-ip>:3000
Konfiguration anpassen
Port ändern
In docker-compose.yml den Port für die App ändern:
ports:
- "8080:3000" # Zugriff über Port 8080
Datenbankverbindung anpassen
In docker-compose.yml die Umgebungsvariablen ändern:
environment:
- DB_HOST=host.docker.internal # Für Host-MySQL
- DB_USER=root # MySQL-Benutzer
- DB_PASS=IhrPasswort # MySQL-Passwort
- DB_NAME=RXF # Datenbankname
Hinweis: host.docker.internal zeigt auf den Docker-Host. Dies wird durch die extra_hosts Konfiguration ermöglicht.
Verwaltung
Container stoppen
docker-compose stop
Container starten
docker-compose start
Container neustarten
docker-compose restart
Container entfernen (Daten bleiben erhalten)
docker-compose down
Alles löschen inkl. Daten
docker-compose down -v
Updates einspielen
# Neue Version holen
git pull # oder rsync
# Neu bauen und starten
docker-compose up -d --build
Logs anschauen
# App-Logs
docker-compose logs -f werte-app
# Letzte 100 Zeilen
docker-compose logs --tail=100 werte-app
Backup
Datenbank-Backup erstellen
# Direkt auf dem Host (empfohlen)
# Passwort wird interaktiv abgefragt
mysqldump -uroot -p RXF > backup_$(date +%Y%m%d).sql
# Oder mit gzip komprimieren
mysqldump -uroot -p RXF | gzip > backup_$(date +%Y%m%d).sql.gz
# Nur die Werte_BZG Tabelle
mysqldump -uroot -p RXF Werte_BZG > werte_backup_$(date +%Y%m%d).sql
Datenbank wiederherstellen
# Aus Backup wiederherstellen
mysql -uroot -p RXF < backup_20260222.sql
# Aus komprimiertem Backup
gunzip < backup_20260222.sql.gz | mysql -uroot -p RXF
Reverse Proxy (Optional)
Für Produktionsumgebungen empfiehlt sich ein Reverse Proxy wie Nginx:
Nginx-Konfiguration Beispiel
server {
listen 80;
server_name werte.example.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Mit SSL (Let's Encrypt)
# Certbot installieren
apt install certbot python3-certbot-nginx
# Zertifikat erstellen
certbot --nginx -d werte.example.com
Troubleshooting
Container startet nicht
# Detaillierte Logs anschauen
docker-compose logs werte-app
# Container neu bauen
docker-compose build --no-cache werte-app
docker-compose up -d
Datenbankverbindung schlägt fehl
# Prüfen ob MySQL auf dem Host läuft
sudo systemctl status mysql
# oder
sudo service mysql status
# MySQL Error Log prüfen
sudo tail -f /var/log/mysql/error.log
# Verbindung vom Docker-Container testen
docker exec -it werte-next-app sh
# Im Container:
ping host.docker.internal
Hinweis: Wenn host.docker.internal nicht funktioniert, können Sie stattdessen die Server-IP verwenden:
environment:
- DB_HOST=192.168.1.100 # Ersetzen mit tatsächlicher Server-IP
App ist langsam
# Ressourcen-Nutzung prüfen
docker stats
# Container neu starten
docker-compose restart werte-app
Systemd Service (Optional)
Für automatischen Start beim Server-Reboot:
# Service-Datei erstellen
sudo nano /etc/systemd/system/werte-next.service
Inhalt:
[Unit]
Description=Werte Next.js Application
After=docker.service
Requires=docker.service
[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/opt/werte-next
ExecStart=/usr/bin/docker-compose up -d
ExecStop=/usr/bin/docker-compose down
TimeoutStartSec=0
[Install]
WantedBy=multi-user.target
Service aktivieren:
sudo systemctl enable werte-next
sudo systemctl start werte-next
sudo systemctl status werte-next
Monitoring
CPU und Memory-Nutzung überwachen:
docker stats werte-next-app
Support
Bei Problemen:
- Logs prüfen:
docker-compose logs -f - Container neu starten:
docker-compose restart - Issues auf GitHub melden