7.5 KiB
7.5 KiB
Remote Development Setup - Mac → Linux Server
🔄 Entwicklungsworkflow: Mac Entwicklung → Linux Testing
Optimaler Workflow für Entwicklung auf Mac mit Testing auf Linux-Server, der der späteren Produktionsumgebung entspricht.
🚀 Quick Start
Auf dem Linux-Server (via SSH):
# 1. Repository klonen (falls nicht geschehen)
git clone https://github.com/your-repo/rezepte.git
cd rezepte
# 2. Development-Umgebung einrichten
./setup-development.sh
# 3. Entwicklungsumgebung starten
./start-development.sh
Von deinem Mac aus zugreifen:
# Option 1: Direkter Zugriff (wenn Server öffentlich)
http://SERVER_IP:3000
# Option 2: SSH-Tunnel (sicherer)
ssh -L 3000:localhost:3000 -L 3001:localhost:3001 -L 8080:localhost:8080 user@server
# Dann: http://localhost:3000
🏗️ Architektur-Übersicht
Development-Pipeline:
┌─────────────┐ ┌─────────────────┐ ┌──────────────────┐
│ Mac │ │ Linux Server │ │ Production │
│ │ │ (Development) │ │ │
│ VS Code │───▶│ Docker Compose │───▶│ Traefik + SSL │
│ Git │ │ Direct Ports │ │ Registry Images │
│ Testing │ │ Hot Reload │ │ External MySQL │
└─────────────┘ └─────────────────┘ └──────────────────┘
Local Dev Linux Testing Production Deploy
🛠️ Development-Umgebung Features
Was wird automatisch eingerichtet:
- ✅ Linux-spezifische Konfiguration (IP-Erkennung, Netzwerk)
- ✅ Development Docker Compose (direkte Ports, Hot Reload)
- ✅ Eigene MySQL-Instanz (unabhängig von Production)
- ✅ CORS für Remote-Zugriff konfiguriert
- ✅ phpMyAdmin für Datenbank-Management
Port-Mapping (alle Interfaces 0.0.0.0):
- Frontend:
3000:80 - Backend:
3001:3001 - phpMyAdmin:
8080:80 - MySQL:
3307:3306
🔧 Entwicklungsworkflows
1. Code-Sync-Strategien:
A) Git-basiert (empfohlen):
# Auf Mac: Code ändern und committen
git add .
git commit -m "Feature XYZ"
git push
# Auf Server: Pullen und neu builden
git pull
docker-compose -f docker-compose.development.yml build frontend
docker-compose -f docker-compose.development.yml restart frontend
B) VS Code Remote-SSH:
# VS Code Extension installieren: "Remote - SSH"
# Direkt auf Server entwickeln
code --remote ssh-remote+user@server /path/to/rezepte
C) rsync-Sync:
# Automatischer Sync von Mac zu Server
rsync -avz --exclude 'node_modules' ./ user@server:/path/to/rezepte/
2. Container-Rebuild-Workflows:
Frontend-Änderungen:
# Auf Server
docker-compose -f docker-compose.development.yml build frontend
docker-compose -f docker-compose.development.yml restart frontend
Backend-Änderungen:
# Auf Server
docker-compose -f docker-compose.development.yml build backend
docker-compose -f docker-compose.development.yml restart backend
Full Rebuild:
# Auf Server
docker-compose -f docker-compose.development.yml down
docker-compose -f docker-compose.development.yml up -d --build
🔒 Sichere Zugriffsmethoden
1. SSH-Tunnel (empfohlen für öffentliche Server):
# Alle Development-Ports tunneln
ssh -L 3000:localhost:3000 \
-L 3001:localhost:3001 \
-L 8080:localhost:8080 \
-L 3307:localhost:3307 \
user@your-server.com
# Dann lokal zugreifen:
# Frontend: http://localhost:3000
# API: http://localhost:3001/api
# phpMyAdmin: http://localhost:8080
2. VPN-Zugriff:
# Wenn Server im VPN/privaten Netzwerk
http://PRIVATE_SERVER_IP:3000
3. Firewall-Konfiguration:
# Auf Server: Ports nur für Development freigeben
sudo ufw allow from YOUR_MAC_IP to any port 3000
sudo ufw allow from YOUR_MAC_IP to any port 3001
sudo ufw allow from YOUR_MAC_IP to any port 8080
🔄 Kontinuierliche Integration
Development → Testing → Production Pipeline:
1. Development (Linux Server):
# Feature entwickeln und testen
./start-development.sh
# Test: http://server:3000
2. Registry-Build (für Staging):
# Images für Registry builden
./build-and-push.sh
3. Production-Deployment:
# Mit fertigen Registry-Images
./deploy-external-db.sh # Oder ./deploy-traefik.sh
📊 Monitoring & Debugging
Live-Logs verfolgen:
# Alle Services
docker-compose -f docker-compose.development.yml logs -f
# Nur Backend
docker-compose -f docker-compose.development.yml logs -f backend
# Nur Frontend
docker-compose -f docker-compose.development.yml logs -f frontend
Container-Status prüfen:
docker-compose -f docker-compose.development.yml ps
docker-compose -f docker-compose.development.yml top
Performance-Monitoring:
# Resource-Verbrauch
docker stats
# Container-Details
docker inspect rezepte-backend-dev
🛠️ Troubleshooting
Container starten nicht:
# Logs prüfen
docker-compose -f docker-compose.development.yml logs
# Clean restart
docker-compose -f docker-compose.development.yml down -v
docker-compose -f docker-compose.development.yml up -d --build
Netzwerk-Verbindung fehlschlägt:
# Server-IP prüfen
ip addr show
hostname -I
# Firewall-Status
sudo ufw status
# Port-Binding prüfen
netstat -tlnp | grep :3000
MySQL-Verbindung fehlschlägt:
# MySQL-Logs
docker-compose -f docker-compose.development.yml logs mysql
# Direkter MySQL-Zugriff
docker exec -it rezepte-mysql-dev mysql -uroot -p
💡 Pro-Tips
1. Auto-Rebuild bei Änderungen:
# File-Watcher für automatischen Rebuild
sudo apt install inotify-tools
# Watch-Script erstellen
#!/bin/bash
inotifywait -m -r --format '%w %e %f' -e modify ./nodejs-version/ | while read dir event file; do
echo "File changed: $dir$file"
if [[ "$dir" == *"frontend"* ]]; then
docker-compose -f docker-compose.development.yml build frontend
docker-compose -f docker-compose.development.yml restart frontend
elif [[ "$dir" == *"backend"* ]]; then
docker-compose -f docker-compose.development.yml build backend
docker-compose -f docker-compose.development.yml restart backend
fi
done
2. Development-Database Reset:
# Datenbank zurücksetzen
docker-compose -f docker-compose.development.yml down -v
docker-compose -f docker-compose.development.yml up -d
3. Resource-Limits für Development:
# In docker-compose.development.yml
services:
backend:
deploy:
resources:
limits:
memory: 512M
reservations:
memory: 256M
🎯 Zusammenfassung
Vorteile dieses Setups:
- ✅ Linux-Kompatibilität testen vor Production
- ✅ Isolierte Development-DB (keine Konflikte)
- ✅ Flexible Zugriffsmethoden (direkt/SSH-Tunnel)
- ✅ Hot Reload für schnelle Entwicklung
- ✅ Production-ähnliche Umgebung
Workflow-Empfehlung:
- Lokal entwickeln (Mac mit VS Code)
- Code synchronisieren (Git/rsync/Remote-SSH)
- Auf Linux testen (Docker Development)
- Registry deployen (Staging/Production)
🚀 Perfect für professionelle Cross-Platform-Entwicklung!