Files
var-monorepo/docker-compose.prod.yml
PxlLoewe 465675fedd dev
2025-05-27 22:29:59 -07:00

196 lines
4.9 KiB
YAML

services:
traefik:
image: traefik:v2.11
ports:
- "80:80"
- "443:443"
deploy:
placement:
constraints: [node.role == manager]
command:
- "--providers.docker"
- "--providers.docker.swarmmode=true"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--api.dashboard=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