thats-me/.devcontainer/README.md
Kevin Adametz c62234e1ca docker setup
# Conflicts:
#	.gitignore
#	backend/vite.config.js
#	frontend/package-lock.json
2026-03-06 13:46:43 +01:00

207 lines
4.2 KiB
Markdown

# DevContainer Setup für Thats-Me
## Was ist ein DevContainer?
Ein DevContainer ist eine vollständige Entwicklungsumgebung in Docker. Cursor/VSCode läuft direkt im Container und Sie entwickeln mit allen Tools, die bereits vorinstalliert sind.
## Voraussetzungen
1. **Docker Desktop** muss laufen
2. **Traefik Proxy** als externes Netzwerk:
```bash
docker network create proxy
```
## DevContainer starten
1. **In Cursor/VSCode:**
- Drücken Sie `Cmd+Shift+P` (macOS) oder `Ctrl+Shift+P` (Windows/Linux)
- Wählen Sie: **"Dev Containers: Reopen in Container"**
- Warten Sie, bis alle Container gebaut und gestartet sind
2. **Beim ersten Start:**
- Der Laravel Container wird gebaut (kann einige Minuten dauern)
- Alle Services werden gestartet (MySQL, Redis, Mailpit, Quasar)
- Sie werden automatisch im Laravel Container eingeloggt
## Was passiert beim Start?
Der DevContainer startet folgende Services:
- **laravel.test** - Laravel Backend (Sie arbeiten in diesem Container)
- **mysql** - Datenbank
- **redis** - Cache/Queue
- **mailpit** - E-Mail Testing
- **quasar.app** - Frontend App (läuft automatisch)
## Arbeiten im Container
### Terminal
Das Terminal in Cursor/VSCode ist bereits im Container. Sie können direkt arbeiten:
```bash
# Sie sind im /var/www/html Verzeichnis (= ./backend vom Host)
php artisan migrate
php artisan serve
composer install
npm install
npm run dev
```
### Verfügbare Services
Im DevContainer können Sie direkt auf die anderen Services zugreifen:
```bash
# MySQL Verbindung
mysql -h mysql -u sail -p
# Passwort: password
# Redis
redis-cli -h redis
# Composer
composer install
composer update
# Artisan
php artisan migrate
php artisan tinker
```
## Zugriff von außerhalb
### Von Ihrem Browser (Host)
Die Ports werden automatisch weitergeleitet:
- **Laravel App:** http://localhost (Port 80)
- **Vite Dev Server:** http://localhost:5173
- **Mailpit Dashboard:** http://localhost:8025
- **Quasar App:** http://localhost:9000
### Mit Traefik
Wenn Traefik läuft, können Sie auch die Domains verwenden:
- https://thats-me.test
- https://portal.thats-me.test
- https://api.thats-me.test
- https://app.thats-me.test
- https://assets.thats-me.test
## Backend .env Konfiguration
Stellen Sie sicher, dass `backend/.env` folgende Werte hat:
```env
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=thats-me
DB_USERNAME=sail
DB_PASSWORD=password
MAIL_MAILER=smtp
MAIL_HOST=mailpit
MAIL_PORT=1025
REDIS_HOST=redis
REDIS_PORT=6379
```
## Vite Dev Server starten
```bash
# Im DevContainer Terminal
npm install
npm run dev
```
Vite läuft dann auf Port 5173 und ist verfügbar unter:
- http://localhost:5173 (vom Host)
- https://assets.thats-me.test (mit Traefik)
## Quasar App
Die Quasar App läuft automatisch in einem separaten Container und ist verfügbar unter:
- http://localhost:9000 (vom Host)
- https://app.thats-me.test (mit Traefik)
## Troubleshooting
### Container startet nicht
```bash
# Schließen Sie den DevContainer
# Öffnen Sie ein normales Terminal auf dem Host
docker-compose down -v
docker-compose build --no-cache
# Dann neu starten: "Dev Containers: Reopen in Container"
```
### "Dockerfile not found" Fehler
Stellen Sie sicher, dass Laravel Sail installiert ist:
```bash
cd backend
composer require laravel/sail --dev
```
### Permission-Probleme
Die User-IDs in `devcontainer.json` anpassen:
```json
"containerEnv": {
"WWWUSER": "1000", // Ihre User-ID
"WWWGROUP": "1000" // Ihre Group-ID
}
```
Finden Sie Ihre IDs mit:
```bash
id -u # User ID
id -g # Group ID
```
### Logs ansehen
```bash
# Im DevContainer Terminal
docker-compose logs -f
# Nur MySQL
docker-compose logs -f mysql
# Nur Quasar
docker-compose logs -f quasar.app
```
## DevContainer verlassen
1. Drücken Sie `Cmd+Shift+P` / `Ctrl+Shift+P`
2. Wählen Sie: **"Dev Containers: Reopen Folder Locally"**
## Container stoppen
Nach dem Verlassen des DevContainers:
```bash
docker-compose down
```
## Vorteile des DevContainers
✅ Alle arbeiten mit der gleichen Umgebung
✅ Keine lokale PHP/MySQL Installation nötig
✅ Automatische Service-Verwaltung
✅ Isolierte Entwicklungsumgebung
✅ Einfaches Onboarding für neue Entwickler