taskmanager/README.Docker.md
2025-11-12 17:16:01 +01:00

177 lines
3.6 KiB
Markdown

# Task Manager - Docker Deployment
Anleitung zum Starten des Task Managers mit Docker und Docker Compose.
## Voraussetzungen
- Docker installiert
- Docker Compose installiert
## Schnellstart
### 1. Repository klonen / Dateien herunterladen
```bash
cd taskmanager
```
### 2. Mit Docker Compose starten
```bash
docker-compose up -d
```
Dieser Befehl:
- Erstellt die PostgreSQL Datenbank
- Baut das Docker-Image der Anwendung
- Führt automatisch Datenbankmigrationen durch
- Erstellt einen Admin-Benutzer
- Startet die Anwendung auf Port 3000
### 3. Anwendung öffnen
Öffne im Browser: http://localhost:3000
## Standard-Login
Nach dem ersten Start wurde automatisch ein Admin-Benutzer angelegt:
- **Email:** admin@taskmanager.de
- **Passwort:** admin123
**WICHTIG:** Ändere das Passwort nach dem ersten Login!
## Logs anzeigen
```bash
# Alle Logs anzeigen
docker-compose logs -f
# Nur App-Logs
docker-compose logs -f app
# Nur Datenbank-Logs
docker-compose logs -f db
```
## Container stoppen
```bash
docker-compose down
```
## Container stoppen und Daten löschen
**ACHTUNG:** Löscht alle Daten in der Datenbank!
```bash
docker-compose down -v
```
## Container neu bauen
Falls du Änderungen am Code gemacht hast:
```bash
docker-compose down
docker-compose build --no-cache
docker-compose up -d
```
## Umgebungsvariablen
Die wichtigsten Umgebungsvariablen sind in der `docker-compose.yml` bereits konfiguriert:
- `DATABASE_URL`: Verbindung zur PostgreSQL Datenbank
- `NEXTAUTH_URL`: URL der Anwendung (für NextAuth)
- `NEXTAUTH_SECRET`: Secret für NextAuth Session-Verschlüsselung
**Für Produktion** solltest du diese Werte ändern:
- Ein sicheres `NEXTAUTH_SECRET` generieren
- `NEXTAUTH_URL` auf deine Domain setzen
- Datenbank-Passwort in `docker-compose.yml` ändern
## Datenbank-Verbindung
Die PostgreSQL Datenbank läuft auf:
- **Host:** localhost (von außen) / db (intern)
- **Port:** 5432
- **User:** taskmanager
- **Passwort:** taskmanager123
- **Datenbank:** taskmanager
## Persistente Daten
Zwei Docker Volumes werden erstellt:
- `postgres_data`: PostgreSQL Datenbank
- `uploads`: Hochgeladene Dateien
Diese bleiben auch nach `docker-compose down` erhalten.
## Troubleshooting
### Port 3000 bereits belegt
Ändere in `docker-compose.yml` den Port:
```yaml
ports:
- "3001:3000" # Nutze Port 3001 statt 3000
```
### Port 5432 bereits belegt
Falls du bereits eine PostgreSQL-Instanz laufen hast:
```yaml
ports:
- "5433:5432" # Nutze Port 5433 statt 5432
```
### Migration schlägt fehl
```bash
# Container neu starten
docker-compose restart app
# Logs prüfen
docker-compose logs app
```
### Admin-User wurde nicht erstellt
```bash
# Seeding manuell ausführen
docker-compose exec app npx prisma db seed
```
## Manuelle Befehle
```bash
# In App-Container einsteigen
docker-compose exec app sh
# Prisma Studio starten (Datenbank-GUI)
docker-compose exec app npx prisma studio
# Migration manuell ausführen
docker-compose exec app npx prisma migrate deploy
# Seeding manuell ausführen
docker-compose exec app npx prisma db seed
```
## Sicherheitshinweise für Produktion
1. **Ändere das NEXTAUTH_SECRET** in `docker-compose.yml`
2. **Ändere das Datenbank-Passwort** in `docker-compose.yml`
3. **Ändere das Admin-Passwort** nach dem ersten Login
4. **Verwende HTTPS** mit einem Reverse Proxy (z.B. Nginx, Traefik)
5. **Setze NEXTAUTH_URL** auf deine echte Domain
6. **Verwende Environment-Files** statt hardcodierter Secrets
## Support
Bei Problemen prüfe:
1. Docker-Logs: `docker-compose logs -f`
2. Sind alle Container gestartet? `docker-compose ps`
3. Ist die Datenbank erreichbar? `docker-compose exec app npx prisma db seed`