# Conflicts: # .gitignore # backend/vite.config.js # frontend/package-lock.json
296 lines
5.3 KiB
Markdown
296 lines
5.3 KiB
Markdown
# Docker Setup für Thats-Me Projekt
|
|
|
|
## Übersicht
|
|
|
|
Dieses Projekt verwendet Docker mit Laravel Sail für das Backend und einen Node-Container für die Quasar Frontend App.
|
|
|
|
### Services
|
|
|
|
- **laravel.test** - Laravel Backend (PHP 8.4)
|
|
- **quasar.app** - Quasar Frontend App (Node 20)
|
|
- **mysql** - MySQL 8.0 Database
|
|
- **mailpit** - E-Mail Testing Tool
|
|
- **redis** - Cache & Queue Service
|
|
|
|
### Domains
|
|
|
|
Das Setup konfiguriert 4 Domains über Traefik:
|
|
|
|
1. **thats-me.test** - Laravel Webseite/Landingpage
|
|
2. **portal.thats-me.test** - Laravel Admin Panel
|
|
3. **api.thats-me.test** - Laravel API für Quasar App
|
|
4. **app.thats-me.test** - Quasar Frontend App
|
|
|
|
Zusätzlich:
|
|
|
|
- **assets.thats-me.test** - Vite Dev Server für Laravel Assets
|
|
|
|
## Voraussetzungen
|
|
|
|
1. **Docker Desktop** installiert
|
|
2. **Traefik Proxy** muss als externes Netzwerk verfügbar sein:
|
|
```bash
|
|
docker network create proxy
|
|
```
|
|
3. **Laravel Sail** muss im Backend installiert sein:
|
|
```bash
|
|
cd backend
|
|
composer require laravel/sail --dev
|
|
```
|
|
|
|
## Installation
|
|
|
|
### 1. Environment Dateien einrichten
|
|
|
|
**Root .env Datei:**
|
|
|
|
```bash
|
|
cp .env.docker .env
|
|
```
|
|
|
|
**Backend .env Datei:**
|
|
|
|
```bash
|
|
cd backend
|
|
cp .env.example .env
|
|
php artisan key:generate
|
|
```
|
|
|
|
Bearbeite `backend/.env` und stelle sicher, dass diese Einstellungen gesetzt sind:
|
|
|
|
```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
|
|
```
|
|
|
|
### 2. Hosts-Datei konfigurieren
|
|
|
|
Füge folgende Einträge zu deiner `/etc/hosts` Datei hinzu:
|
|
|
|
```
|
|
127.0.0.1 thats-me.test
|
|
127.0.0.1 portal.thats-me.test
|
|
127.0.0.1 api.thats-me.test
|
|
127.0.0.1 app.thats-me.test
|
|
127.0.0.1 assets.thats-me.test
|
|
```
|
|
|
|
### 3. Docker Container starten
|
|
|
|
```bash
|
|
docker-compose up -d
|
|
```
|
|
|
|
### 4. Laravel Installation abschließen
|
|
|
|
Beim ersten Start:
|
|
|
|
```bash
|
|
# In den Laravel Container einsteigen
|
|
docker-compose exec laravel.test bash
|
|
|
|
# Composer Dependencies installieren
|
|
composer install
|
|
|
|
# Datenbank migrieren
|
|
php artisan migrate
|
|
|
|
# Optional: Seeder ausführen
|
|
php artisan db:seed
|
|
```
|
|
|
|
### 5. Frontend Dependencies installieren
|
|
|
|
Der Quasar Container installiert automatisch die Dependencies beim Start.
|
|
Falls manuell nötig:
|
|
|
|
```bash
|
|
docker-compose exec quasar.app npm install
|
|
```
|
|
|
|
## Verwendung
|
|
|
|
### Container starten
|
|
|
|
```bash
|
|
docker-compose up -d
|
|
```
|
|
|
|
### Container stoppen
|
|
|
|
```bash
|
|
docker-compose down
|
|
```
|
|
|
|
### Logs ansehen
|
|
|
|
```bash
|
|
# Alle Services
|
|
docker-compose logs -f
|
|
|
|
# Nur Laravel
|
|
docker-compose logs -f laravel.test
|
|
|
|
# Nur Quasar
|
|
docker-compose logs -f quasar.app
|
|
```
|
|
|
|
### In Container einsteigen
|
|
|
|
**Laravel:**
|
|
|
|
```bash
|
|
docker-compose exec laravel.test bash
|
|
```
|
|
|
|
**Quasar:**
|
|
|
|
```bash
|
|
docker-compose exec quasar.app sh
|
|
```
|
|
|
|
**MySQL:**
|
|
|
|
```bash
|
|
docker-compose exec mysql mysql -u sail -p
|
|
# Passwort: password
|
|
```
|
|
|
|
### Artisan Commands
|
|
|
|
```bash
|
|
docker-compose exec laravel.test php artisan migrate
|
|
docker-compose exec laravel.test php artisan cache:clear
|
|
docker-compose exec laravel.test php artisan queue:work
|
|
```
|
|
|
|
### NPM Commands (Frontend)
|
|
|
|
```bash
|
|
docker-compose exec quasar.app npm run dev
|
|
docker-compose exec quasar.app npm run build
|
|
```
|
|
|
|
## Zugriff auf die Anwendung
|
|
|
|
### Mit Traefik (empfohlen)
|
|
|
|
- **Hauptwebseite:** https://thats-me.test
|
|
- **Admin Portal:** https://portal.thats-me.test
|
|
- **API:** https://api.thats-me.test
|
|
- **Frontend App:** https://app.thats-me.test
|
|
- **Vite Assets:** https://assets.thats-me.test
|
|
|
|
### Direkt über Ports
|
|
|
|
- **Laravel App:** http://localhost (Port 80 über Traefik)
|
|
- **Vite Dev Server:** http://localhost:5179 (Host) → 5173 (Container)
|
|
- **Quasar App:** http://localhost:9000
|
|
- **Mailpit Dashboard:** http://localhost:8028
|
|
- **MySQL:** localhost:33070
|
|
- **Redis:** localhost:6383
|
|
|
|
## Vite Development Server
|
|
|
|
Um den Vite Dev Server für Laravel zu starten:
|
|
|
|
```bash
|
|
docker-compose exec laravel.test npm install
|
|
docker-compose exec laravel.test npm run dev
|
|
```
|
|
|
|
Dann ist HMR (Hot Module Replacement) unter https://assets.thats-me.test verfügbar.
|
|
|
|
## Troubleshooting
|
|
|
|
### Proxy-Netzwerk existiert nicht
|
|
|
|
```bash
|
|
docker network create proxy
|
|
```
|
|
|
|
### Port-Konflikte
|
|
|
|
Ändere die Ports in der `.env` Datei:
|
|
|
|
```env
|
|
FORWARD_DB_PORT=33071
|
|
FORWARD_MAILPIT_DASHBOARD_PORT=8029
|
|
QUASAR_PORT=9001
|
|
VITE_PORT=5180
|
|
```
|
|
|
|
### Permission-Probleme
|
|
|
|
```bash
|
|
# User/Group IDs in .env anpassen
|
|
WWWUSER=1000
|
|
WWWGROUP=1000
|
|
```
|
|
|
|
### Container neu bauen
|
|
|
|
```bash
|
|
docker-compose down -v
|
|
docker-compose build --no-cache
|
|
docker-compose up -d
|
|
```
|
|
|
|
### Quasar startet nicht
|
|
|
|
```bash
|
|
# Manuell im Container starten
|
|
docker-compose exec quasar.app sh
|
|
cd /app
|
|
npm install
|
|
npm run dev
|
|
```
|
|
|
|
## Entwicklung ohne Traefik
|
|
|
|
Falls Sie kein Traefik haben, können Sie die Container auch direkt über Ports erreichen:
|
|
|
|
1. Entfernen Sie die `labels` Sektion aus `docker-compose.yml`
|
|
2. Aktivieren Sie den Port-Mapping für Laravel:
|
|
```yaml
|
|
ports:
|
|
- "${APP_PORT:-80}:80"
|
|
- "${VITE_PORT:-5173}:5173"
|
|
```
|
|
3. Zugriff dann über:
|
|
- Laravel: http://localhost
|
|
- Vite: http://localhost:5173
|
|
- Quasar: http://localhost:9000
|
|
|
|
## Nützliche Befehle
|
|
|
|
```bash
|
|
# Container Status
|
|
docker-compose ps
|
|
|
|
# Container neu starten
|
|
docker-compose restart
|
|
|
|
# Bestimmten Service neu starten
|
|
docker-compose restart laravel.test
|
|
|
|
# Container und Volumes löschen
|
|
docker-compose down -v
|
|
|
|
# Logs von heute
|
|
docker-compose logs --since 24h
|
|
|
|
# Ressourcen-Nutzung
|
|
docker stats
|
|
```
|