204 lines
5.2 KiB
YAML
204 lines
5.2 KiB
YAML
services:
|
|
traefik:
|
|
image: traefik:v2.11
|
|
ports:
|
|
- "80:80"
|
|
- "443:443"
|
|
- "8080:8080" # Traefik Dashboard
|
|
deploy:
|
|
placement:
|
|
constraints:
|
|
- node.role == manager
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.api.rule=Host(`traefik.premiumag.de`)"
|
|
- "traefik.http.routers.api.service=api@internal"
|
|
- "traefik.http.routers.api.entrypoints=web"
|
|
- "traefik.http.services.api.loadbalancer.server.port=8080"
|
|
command:
|
|
- "--api.dashboard=true"
|
|
- "--api.insecure=true" # Nur für Testzwecke!
|
|
- "--entrypoints.web.address=:80"
|
|
- "--providers.docker"
|
|
- "--providers.docker.swarmmode=true"
|
|
volumes:
|
|
- "/var/run/docker.sock:/var/run/docker.sock:ro"
|
|
dispatch:
|
|
deploy:
|
|
replicas: 3
|
|
build:
|
|
context: .
|
|
dockerfile: ./apps/dispatch/Dockerfile
|
|
args:
|
|
- NEXT_PUBLIC_DISPATCH_URL=$NEXT_PUBLIC_DISPATCH_URL
|
|
- NEXT_PUBLIC_HUB_URL=$NEXT_PUBLIC_HUB_URL
|
|
- NEXT_PUBLIC_DISPATCH_SERVICE_ID=1
|
|
- NEXT_PUBLIC_LIVEKIT_URL=$NEXT_PUBLIC_LIVEKIT_URL
|
|
- NEXT_PUBLIC_DISPATCH_SERVER_URL=$NEXT_PUBLIC_DISPATCH_SERVER_URL
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.dispatch.rule=Host(`dispatch.premiumag.de`)"
|
|
- "traefik.http.services.dispatch.loadbalancer.server.port=3000"
|
|
env_file:
|
|
- .env.prod
|
|
networks:
|
|
- postgres_network
|
|
hub:
|
|
build:
|
|
context: .
|
|
dockerfile: ./apps/hub/Dockerfile
|
|
args:
|
|
- NEXT_PUBLIC_DISPATCH_URL=$NEXT_PUBLIC_DISPATCH_URL
|
|
- NEXT_PUBLIC_HUB_URL=$NEXT_PUBLIC_HUB_URL
|
|
- NEXT_PUBLIC_LIVEKIT_URL=$NEXT_PUBLIC_LIVEKIT_URL
|
|
- NEXT_PUBLIC_HUB_SERVER_URL=$NEXT_PUBLIC_HUB_SERVER_URL
|
|
container_name: hub
|
|
ports:
|
|
- "3000:3000"
|
|
env_file:
|
|
- .env.prod
|
|
networks:
|
|
- postgres_network
|
|
hub-server:
|
|
build:
|
|
context: .
|
|
dockerfile: ./apps/hub-server/Dockerfile
|
|
container_name: hub-server
|
|
ports:
|
|
- "3003:3000"
|
|
env_file:
|
|
- .env.prod
|
|
networks:
|
|
- postgres_network
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
dispatch-server:
|
|
deploy:
|
|
replicas: 3
|
|
build:
|
|
context: .
|
|
dockerfile: ./apps/dispatch-server/Dockerfile
|
|
env_file:
|
|
- .env.prod
|
|
networks:
|
|
- postgres_network
|
|
- redis_network
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.dispatch.rule=Host(`dispatch-server.premiumag.de`)"
|
|
- "traefik.http.services.dispatch.loadbalancer.server.port=3000"
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
postgres:
|
|
image: postgres:13
|
|
container_name: postgres
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U persistant-data -d var"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 3
|
|
|
|
ports:
|
|
- "5432:5432"
|
|
environment:
|
|
POSTGRES_USER: persistant-data
|
|
POSTGRES_PASSWORD: persistant-data-pw
|
|
POSTGRES_DB: var
|
|
volumes:
|
|
- postgres-data:/var/lib/postgresql/data
|
|
networks:
|
|
- postgres_network
|
|
grafana:
|
|
image: grafana/grafana:latest
|
|
container_name: grafana
|
|
ports:
|
|
- "4100:3000"
|
|
depends_on:
|
|
- postgres
|
|
volumes:
|
|
- ./grafana:/var/lib/grafana
|
|
redis:
|
|
container_name: redis
|
|
image: redis/redis-stack:latest
|
|
ports:
|
|
- "6379:6379"
|
|
volumes:
|
|
- "redis_data:/data"
|
|
networks:
|
|
- redis_network
|
|
healthcheck:
|
|
test: ["CMD", "redis-cli", "--raw", "incr", "ping"]
|
|
|
|
moodle_database:
|
|
container_name: moodle_database
|
|
image: docker.io/bitnami/mariadb:latest
|
|
environment:
|
|
# ALLOW_EMPTY_PASSWORD is recommended only for development.
|
|
- ALLOW_EMPTY_PASSWORD=yes
|
|
- MARIADB_USER=bn_moodle
|
|
- MARIADB_DATABASE=bitnami_moodle
|
|
- MARIADB_CHARACTER_SET=utf8mb4
|
|
- MARIADB_COLLATE=utf8mb4_unicode_ci
|
|
volumes:
|
|
- "moodle_database:/bitnami/mariadb"
|
|
moodle:
|
|
image: bitnami/moodle:latest
|
|
container_name: moodle
|
|
ports:
|
|
- "8081:8080" # Moodle läuft auf http://localhost:8081
|
|
environment:
|
|
- MOODLE_DATABASE_HOST=moodle_database
|
|
- MOODLE_DATABASE_PORT_NUMBER=3306
|
|
- MOODLE_DATABASE_USER=bn_moodle
|
|
- MOODLE_DATABASE_NAME=bitnami_moodle
|
|
|
|
- MOODLE_USERNAME=admin
|
|
- MOODLE_PASSWORD=admin123
|
|
- MOODLE_EMAIL=admin@example.com
|
|
- MOODLE_SITE_NAME="Mein Lokales Moodle"
|
|
- MOODLE_SSLPROXY=false
|
|
- ALLOW_EMPTY_PASSWORD=yes
|
|
depends_on:
|
|
- moodle_database
|
|
volumes:
|
|
- moodle_data:/bitnami/moodle
|
|
- moodle_moodledata:/bitnami/moodledata
|
|
# Für den Zugriff auf den Host
|
|
livekit-server:
|
|
image: livekit/livekit-server
|
|
container_name: livekit_server
|
|
restart: unless-stopped
|
|
ports:
|
|
- "7880:7880"
|
|
- "7881:7881"
|
|
- "7882:7882/udp"
|
|
volumes:
|
|
- "./livekit.yaml:/livekit.yaml"
|
|
command:
|
|
- "--config"
|
|
- "/livekit.yaml"
|
|
- "--node-ip=127.0.0.1"
|
|
|
|
networks:
|
|
default:
|
|
driver: bridge
|
|
networks:
|
|
traefik_public:
|
|
external: true
|
|
postgres_network:
|
|
driver: bridge
|
|
redis_network:
|
|
driver: bridge
|
|
|
|
volumes:
|
|
postgres-data:
|
|
moodle_data:
|
|
moodle_database:
|
|
moodle_moodledata:
|
|
redis_data:
|
|
driver: local
|