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

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:-5179}: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