services: # Laravel Backend Service laravel.test: build: context: './backend/vendor/laravel/sail/runtimes/8.4' dockerfile: Dockerfile args: WWWGROUP: '${WWWGROUP:-20}' WWWUSER: '${WWWUSER:-501}' image: 'sail-8.4/app' extra_hosts: - 'host.docker.internal:host-gateway' ports: - '${VITE_PORT:-5180}:5173' environment: WWWUSER: '${WWWUSER:-501}' WWWGROUP: '${WWWGROUP:-20}' LARAVEL_SAIL: 1 XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}' XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}' IGNITION_LOCAL_SITES_PATH: '${PWD}' DB_CONNECTION: mysql DB_HOST: mysql DB_PORT: 3306 DB_DATABASE: thats-me DB_USERNAME: sail DB_PASSWORD: password MAIL_HOST: mailpit MAIL_PORT: 1025 REDIS_HOST: redis volumes: - './backend:/var/www/html' networks: - sail - proxy depends_on: - mysql - mailpit - redis labels: - "traefik.enable=true" # Domain 1: Hauptdomain thats-me.test (Webseite/Landingpage) - "traefik.http.routers.thatsme-main.rule=Host(`thats-me.test`)" - "traefik.http.routers.thatsme-main.entrypoints=websecure" - "traefik.http.routers.thatsme-main.tls=true" - "traefik.http.routers.thatsme-main.service=thatsme-service" # Domain 2: portal.thats-me.test (Admin Panel) - "traefik.http.routers.thatsme-portal.rule=Host(`portal.thats-me.test`)" - "traefik.http.routers.thatsme-portal.entrypoints=websecure" - "traefik.http.routers.thatsme-portal.tls=true" - "traefik.http.routers.thatsme-portal.service=thatsme-service" # Domain 3: api.thats-me.test (API für Quasar App) - "traefik.http.routers.thatsme-api.rule=Host(`api.thats-me.test`)" - "traefik.http.routers.thatsme-api.entrypoints=websecure" - "traefik.http.routers.thatsme-api.tls=true" - "traefik.http.routers.thatsme-api.service=thatsme-service" # Vite Asset Domain für Backend Development - "traefik.http.routers.thatsme-assets.rule=Host(`assets.thats-me.test`)" - "traefik.http.routers.thatsme-assets.entrypoints=websecure" - "traefik.http.routers.thatsme-assets.tls=true" - "traefik.http.routers.thatsme-assets.service=thatsme-assets-service" # Service Definitions - "traefik.http.services.thatsme-service.loadbalancer.server.port=80" - "traefik.http.services.thatsme-assets-service.loadbalancer.server.port=5173" - "traefik.http.services.thatsme-assets-service.loadbalancer.server.scheme=http" - "traefik.docker.network=proxy" # Quasar Frontend Service quasar.app: image: 'node:20-alpine' working_dir: /app command: sh -c "npm install && npm run dev" ports: - '${QUASAR_PORT:-9000}:9000' environment: NODE_ENV: development volumes: - './frontend:/app' networks: - sail - proxy labels: - "traefik.enable=true" # Domain 4: app.thats-me.test (Quasar Frontend App) - "traefik.http.routers.thatsme-app.rule=Host(`app.thats-me.test`)" - "traefik.http.routers.thatsme-app.entrypoints=websecure" - "traefik.http.routers.thatsme-app.tls=true" - "traefik.http.routers.thatsme-app.service=thatsme-app-service" # Service Definition - "traefik.http.services.thatsme-app-service.loadbalancer.server.port=9000" - "traefik.http.services.thatsme-app-service.loadbalancer.server.scheme=http" - "traefik.docker.network=proxy" # MySQL Database mysql: image: 'mysql/mysql-server:8.0' ports: - '${FORWARD_DB_PORT:-33070}:3306' environment: MYSQL_ROOT_PASSWORD: '${DB_PASSWORD:-password}' MYSQL_ROOT_HOST: '%' MYSQL_DATABASE: '${DB_DATABASE:-thats-me}' MYSQL_USER: '${DB_USERNAME:-sail}' MYSQL_PASSWORD: '${DB_PASSWORD:-password}' MYSQL_ALLOW_EMPTY_PASSWORD: 1 volumes: - 'sail-mysql:/var/lib/mysql' - './backend/vendor/laravel/sail/database/mysql/create-testing-database.sh:/docker-entrypoint-initdb.d/10-create-testing-database.sh' networks: - sail healthcheck: test: - CMD - mysqladmin - ping - '-p${DB_PASSWORD:-password}' retries: 3 timeout: 5s # Mailpit für E-Mail Testing mailpit: image: 'axllent/mailpit:latest' ports: - '${FORWARD_MAILPIT_PORT:-1028}:1025' - '${FORWARD_MAILPIT_DASHBOARD_PORT:-8028}:8025' networks: - sail # Redis Cache/Queue redis: image: 'redis:alpine' ports: - '${FORWARD_REDIS_PORT:-6383}:6379' volumes: - 'sail-redis:/data' networks: - sail healthcheck: test: - CMD - redis-cli - ping retries: 3 timeout: 5s networks: sail: driver: bridge proxy: external: true volumes: sail-mysql: driver: local sail-redis: driver: local