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

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:

  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:
    docker network create proxy
    
  3. 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)

Direkt über Ports

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:

  1. Entfernen Sie die labels Sektion aus docker-compose.yml
  2. Aktivieren Sie den Port-Mapping für Laravel:
    ports:
      - "${APP_PORT:-80}:80"
      - "${VITE_PORT:-5173}:5173"
    
  3. Zugriff dann über:

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