docker setup
# Conflicts: # .gitignore # backend/vite.config.js # frontend/package-lock.json
This commit is contained in:
parent
f01a0a967f
commit
c62234e1ca
546 changed files with 141382 additions and 757 deletions
162
docker-compose.yml
Normal file
162
docker-compose.yml
Normal file
|
|
@ -0,0 +1,162 @@
|
|||
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
|
||||
Loading…
Add table
Add a link
Reference in a new issue