# Docker Runbook (WingsEmu Full Stack)

## Voraussetzungen
- Docker Desktop / Docker Engine läuft
- `.env` im Projektroot vorhanden
- Runtime-Daten vorhanden:
  - `resources/dat/*`
  - `translations/*`
  - `config/*` (bei Bedarf)

## Start
```bash
docker compose up -d --build
```

## Status prüfen
```bash
docker compose ps
```

## Logs (alle)
```bash
docker compose logs -f --tail=200
```

## Logs (einzelner Service)
```bash
docker logs -f --tail=200 wingsemu-gamechannel
docker logs -f --tail=200 wingsemu-master
docker logs -f --tail=200 wingsemu-login
```

## Häufige Health-Checks
```bash
# Container Status
docker compose ps

# Core Ports (Windows PowerShell)
Test-NetConnection 127.0.0.1 -Port 20500
Test-NetConnection 127.0.0.1 -Port 4004
Test-NetConnection 127.0.0.1 -Port 8000
Test-NetConnection 127.0.0.1 -Port 17500
```

## Nur einzelnen Service neu bauen/starten
```bash
docker compose up -d --build gamechannel
docker compose up -d --build master
docker compose up -d --build login
```

## Stop
```bash
docker compose down
```

## Hard Reset (inkl. Volumes)
> Achtung: löscht lokale Docker-Daten (DB/Redis/Mongo Volumes)
```bash
docker compose down -v --remove-orphans
docker compose up -d --build
```

## Fehlerbilder

### `gamechannel` startet nicht / NullReference beim Startup
- Prüfe, ob `resources/dat` vollständig ist (mind. `Item.dat`)
- Prüfe, ob `translations/*` vorhanden ist
- Logs prüfen: `docker logs --tail 200 wingsemu-gamechannel`

### DB-Auth-Fehler
- `.env` prüfen (`POSTGRES_*` Werte)
- Bei Inkonsistenz Volume resetten (siehe Hard Reset)

### MQTT/Infra nicht healthy
- `docker compose ps`
- `docker logs --tail 200 wingsemu-mqtt`
- `docker logs --tail 200 wingsemu-postgres`
- `docker logs --tail 200 wingsemu-redis`
- `docker logs --tail 200 wingsemu-mongodb`
