# 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`