162 lines
5.7 KiB
YAML
162 lines
5.7 KiB
YAML
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
|