179 lines
4.4 KiB
Markdown
179 lines
4.4 KiB
Markdown
# CitySensor Docker Registry Integration
|
|
|
|
## 🏢 Überblick
|
|
|
|
Diese Konfiguration ist speziell für die **CitySensor Docker Registry** (`docker.citysensor.de`) angepasst und unterstützt:
|
|
|
|
- ✅ **Private Registry Authentication** mit Username/Passwort
|
|
- ✅ **Automatisches Login** in Build- und Deployment-Skripten
|
|
- ✅ **Traefik-Integration** für `rezepte.your.domain.com`
|
|
- ✅ **CI/CD Pipeline** mit GitHub Actions
|
|
- ✅ **Minimaler Server-Footprint** (~60 KB statt Repository-Clone)
|
|
|
|
## 🚀 Schnell-Setup
|
|
|
|
### 1. Build-Konfiguration erstellen:
|
|
```bash
|
|
cp .env.build.example .env.registry
|
|
# Edit .env.registry mit Ihren CitySensor-Zugangsdaten
|
|
```
|
|
|
|
### 2. Images bauen und pushen:
|
|
```bash
|
|
./build-and-push.sh
|
|
```
|
|
|
|
### 3. Server-Deployment:
|
|
```bash
|
|
# Dateien auf Server kopieren:
|
|
scp docker-compose.traefik.yml user@server:/opt/rezepte/
|
|
scp .env.production user@server:/opt/rezepte/
|
|
scp *.sql user@server:/opt/rezepte/
|
|
scp deploy-traefik.sh user@server:/opt/rezepte/
|
|
|
|
# Auf Server deployen:
|
|
ssh user@server
|
|
cd /opt/rezepte
|
|
./deploy-traefik.sh
|
|
```
|
|
|
|
## 📁 Konfigurationsdateien
|
|
|
|
### `.env.registry` (für Build):
|
|
```env
|
|
DOMAIN=example.com
|
|
API_BASE_URL=https://rezepte.example.com/api
|
|
DOCKER_REGISTRY=docker.citysensor.de
|
|
DOCKER_USERNAME=your_username
|
|
DOCKER_PASSWORD=your_password
|
|
MYSQL_PASSWORD=secure_db_password
|
|
MYSQL_ROOT_PASSWORD=super_secure_root_password
|
|
```
|
|
|
|
### `.env.production` (für Server):
|
|
```env
|
|
DOMAIN=example.com
|
|
ACME_EMAIL=admin@example.com
|
|
MYSQL_PASSWORD=secure_db_password
|
|
MYSQL_ROOT_PASSWORD=super_secure_root_password
|
|
DOCKER_REGISTRY=docker.citysensor.de
|
|
DOCKER_USERNAME=your_username
|
|
DOCKER_PASSWORD=your_password
|
|
BACKEND_IMAGE=docker.citysensor.de/rezepte-backend:latest
|
|
FRONTEND_IMAGE=docker.citysensor.de/rezepte-frontend:latest
|
|
```
|
|
|
|
## 🔧 Registry-Authentifizierung
|
|
|
|
### Manuelles Login:
|
|
```bash
|
|
echo "your_password" | docker login docker.citysensor.de -u your_username --password-stdin
|
|
```
|
|
|
|
### Automatisches Login:
|
|
Die Skripte `build-and-push.sh`, `deploy-registry.sh` und `deploy-traefik.sh` führen automatisch ein Login durch, wenn die Umgebungsvariablen gesetzt sind.
|
|
|
|
## 🌐 DNS-Konfiguration
|
|
|
|
Für `rezepte.example.com` benötigen Sie diese DNS-Einträge:
|
|
|
|
```
|
|
# A-Records auf Ihre Server-IP:
|
|
rezepte.example.com → 1.2.3.4
|
|
traefik.example.com → 1.2.3.4
|
|
|
|
# Oder Wildcard:
|
|
*.example.com → 1.2.3.4
|
|
```
|
|
|
|
## 🔒 Sicherheitshinweise
|
|
|
|
1. **Niemals Credentials committen**: `.env.*` Dateien sind in `.gitignore`
|
|
2. **Starke Passwörter verwenden**: Besonders für Datenbank und Registry
|
|
3. **Traefik Dashboard absichern**: Basic Auth konfiguriert (admin/admin - ändern!)
|
|
4. **SSL automatisch**: Let's Encrypt Zertifikate werden automatisch erstellt
|
|
|
|
## 📊 CI/CD mit GitHub Actions
|
|
|
|
### Repository Secrets konfigurieren:
|
|
```
|
|
DOCKER_USERNAME: your_citysensor_username
|
|
DOCKER_PASSWORD: your_citysensor_password
|
|
PRODUCTION_API_URL: https://rezepte.example.com/api
|
|
```
|
|
|
|
### Repository Variables (optional):
|
|
```
|
|
DOCKER_REGISTRY: docker.citysensor.de
|
|
```
|
|
|
|
## 🎯 Zugangspunkte nach Deployment
|
|
|
|
- **Hauptanwendung**: https://rezepte.example.com
|
|
- **Traefik Dashboard**: https://traefik.example.com
|
|
- **API**: https://rezepte.example.com/api
|
|
- **Images**: https://rezepte.example.com/uploads/...
|
|
|
|
## 🛠️ Wartung
|
|
|
|
### Images aktualisieren:
|
|
```bash
|
|
# Lokal: Neue Images bauen und pushen
|
|
./build-and-push.sh
|
|
|
|
# Server: Images pullen und neu starten
|
|
./deploy-traefik.sh
|
|
```
|
|
|
|
### Logs anzeigen:
|
|
```bash
|
|
docker-compose -f docker-compose.traefik.yml logs -f
|
|
```
|
|
|
|
### Backup:
|
|
```bash
|
|
./backup.sh
|
|
```
|
|
|
|
## 🆘 Troubleshooting
|
|
|
|
### Registry-Login-Probleme:
|
|
```bash
|
|
# Manuell testen:
|
|
docker login docker.citysensor.de -u username
|
|
|
|
# Credentials prüfen:
|
|
echo $DOCKER_USERNAME
|
|
echo $DOCKER_PASSWORD
|
|
```
|
|
|
|
### SSL-Zertifikat-Probleme:
|
|
```bash
|
|
# DNS prüfen:
|
|
nslookup rezepte.example.com
|
|
|
|
# Traefik Logs:
|
|
docker logs traefik
|
|
```
|
|
|
|
### Container-Probleme:
|
|
```bash
|
|
# Status prüfen:
|
|
docker-compose -f docker-compose.traefik.yml ps
|
|
|
|
# Logs einzelner Services:
|
|
docker-compose -f docker-compose.traefik.yml logs backend
|
|
```
|
|
|
|
## ✅ Checkliste für Go-Live
|
|
|
|
- [ ] DNS-Einträge konfiguriert
|
|
- [ ] `.env.production` mit korrekten Werten erstellt
|
|
- [ ] CitySensor Registry-Credentials getestet
|
|
- [ ] Images erfolgreich gepusht
|
|
- [ ] Server-Firewall (Ports 80, 443) konfiguriert
|
|
- [ ] Traefik Dashboard-Passwort geändert
|
|
- [ ] Backup-Strategie implementiert
|
|
- [ ] Monitoring eingerichtet
|
|
|
|
Das System ist produktionsreif und skalierbar! 🚀 |