# Conflicts: # .gitignore # backend/vite.config.js # frontend/package-lock.json
5.3 KiB
5.3 KiB
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:
- thats-me.test - Laravel Webseite/Landingpage
- portal.thats-me.test - Laravel Admin Panel
- api.thats-me.test - Laravel API für Quasar App
- app.thats-me.test - Quasar Frontend App
Zusätzlich:
- assets.thats-me.test - Vite Dev Server für Laravel Assets
Voraussetzungen
- Docker Desktop installiert
- Traefik Proxy muss als externes Netzwerk verfügbar sein:
docker network create proxy - Laravel Sail muss im Backend installiert sein:
cd backend composer require laravel/sail --dev
Installation
1. Environment Dateien einrichten
Root .env Datei:
cp .env.docker .env
Backend .env Datei:
cd backend
cp .env.example .env
php artisan key:generate
Bearbeite backend/.env und stelle sicher, dass diese Einstellungen gesetzt sind:
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
docker-compose up -d
4. Laravel Installation abschließen
Beim ersten Start:
# 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:
docker-compose exec quasar.app npm install
Verwendung
Container starten
docker-compose up -d
Container stoppen
docker-compose down
Logs ansehen
# 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:
docker-compose exec laravel.test bash
Quasar:
docker-compose exec quasar.app sh
MySQL:
docker-compose exec mysql mysql -u sail -p
# Passwort: password
Artisan Commands
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)
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:
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
docker network create proxy
Port-Konflikte
Ändere die Ports in der .env Datei:
FORWARD_DB_PORT=33071
FORWARD_MAILPIT_DASHBOARD_PORT=8029
QUASAR_PORT=9001
VITE_PORT=5180
Permission-Probleme
# User/Group IDs in .env anpassen
WWWUSER=1000
WWWGROUP=1000
Container neu bauen
docker-compose down -v
docker-compose build --no-cache
docker-compose up -d
Quasar startet nicht
# 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:
- Entfernen Sie die
labelsSektion ausdocker-compose.yml - Aktivieren Sie den Port-Mapping für Laravel:
ports: - "${APP_PORT:-80}:80" - "${VITE_PORT:-5173}:5173" - Zugriff dann über:
- Laravel: http://localhost
- Vite: http://localhost:5173
- Quasar: http://localhost:9000
Nützliche Befehle
# 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