added staging config
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -14,6 +14,7 @@ mkcert
|
||||
.env
|
||||
.env.local
|
||||
.env.prod
|
||||
.env.staging
|
||||
|
||||
# Testing
|
||||
coverage
|
||||
|
||||
242
docker-compose.staging.yml
Normal file
242
docker-compose.staging.yml
Normal file
@@ -0,0 +1,242 @@
|
||||
networks:
|
||||
default:
|
||||
driver: bridge
|
||||
postgres_network:
|
||||
driver: bridge
|
||||
core_network:
|
||||
driver: bridge
|
||||
redis_network:
|
||||
driver: bridge
|
||||
traefik:
|
||||
external: true
|
||||
moodle_db_network:
|
||||
driver: bridge
|
||||
|
||||
services:
|
||||
hub:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: ./apps/hub/Dockerfile
|
||||
args:
|
||||
- NEXT_PUBLIC_HUB_URL=$NEXT_PUBLIC_HUB_URL
|
||||
- NEXT_PUBLIC_HUB_SERVER_URL=$NEXT_PUBLIC_HUB_SERVER_URL
|
||||
- NEXT_PUBLIC_DISCORD_URL=$NEXT_PUBLIC_DISCORD_URL
|
||||
- NEXT_PUBLIC_MOODLE_URL=$NEXT_PUBLIC_MOODLE_URL
|
||||
- NEXT_PUBLIC_DISPATCH_URL=$NEXT_PUBLIC_DISPATCH_URL
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.hub.rule=Host(`hub.premiumag.de`)"
|
||||
- "traefik.http.routers.hub.entrypoints=websecure"
|
||||
- "traefik.http.routers.hub.tls.certresolver=le"
|
||||
- "traefik.http.services.hub.loadbalancer.server.port=3000"
|
||||
ports:
|
||||
- 3000:3000
|
||||
environment:
|
||||
- NEXTAUTH_URL=${AUTH_HUB_URL}
|
||||
- NEXTAUTH_SECRET=${AUTH_HUB_SECRET}
|
||||
env_file:
|
||||
- .env.prod
|
||||
networks:
|
||||
- core_network
|
||||
- postgres_network
|
||||
- traefik
|
||||
|
||||
hub-server:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: ./apps/hub-server/Dockerfile
|
||||
container_name: hub-server
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.hub-server.rule=Host(`api.hub.premiumag.de`)"
|
||||
- "traefik.http.routers.hub-server.entrypoints=websecure"
|
||||
- "traefik.http.routers.hub-server.tls.certresolver=le"
|
||||
- "traefik.http.services.hub-server.loadbalancer.server.port=3000"
|
||||
|
||||
env_file:
|
||||
- .env.prod
|
||||
networks:
|
||||
- core_network
|
||||
- postgres_network
|
||||
- traefik
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
|
||||
# Dispatch Service
|
||||
dispatch:
|
||||
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
|
||||
env_file:
|
||||
- .env.prod
|
||||
deploy:
|
||||
replicas: 2
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.dispatch.rule=Host(`dispatch.premiumag.de`)"
|
||||
- "traefik.http.routers.dispatch.entrypoints=websecure"
|
||||
- "traefik.http.routers.dispatch.tls.certresolver=le"
|
||||
- "traefik.http.services.dispatch.loadbalancer.server.port=3000"
|
||||
|
||||
environment:
|
||||
- NEXTAUTH_URL=${AUTH_DISPATCH_URL}
|
||||
- NEXTAUTH_SECRET=${AUTH_DISPATCH_SECRET}
|
||||
|
||||
networks:
|
||||
- postgres_network
|
||||
- traefik
|
||||
dispatch-server:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: ./apps/dispatch-server/Dockerfile
|
||||
env_file:
|
||||
- .env.prod
|
||||
deploy:
|
||||
replicas: 3
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.dispatch-server.rule=Host(`api.dispatch.premiumag.de`)"
|
||||
- "traefik.http.routers.dispatch-server.entrypoints=websecure"
|
||||
- "traefik.http.routers.dispatch-server.tls.certresolver=le"
|
||||
- "traefik.http.services.dispatch-server.loadBalancer.sticky.cookie.name=server_id"
|
||||
- "traefik.http.services.dispatch-server.loadBalancer.sticky.cookie.httpOnly=true"
|
||||
- "traefik.http.services.dispatch-server.loadbalancer.server.port=3000"
|
||||
networks:
|
||||
- core_network
|
||||
- postgres_network
|
||||
- redis_network
|
||||
- traefik
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
cadvisor:
|
||||
image: gcr.io/cadvisor/cadvisor:latest
|
||||
container_name: cadvisor
|
||||
ports:
|
||||
- "8090:8080"
|
||||
volumes:
|
||||
- /:/rootfs:ro
|
||||
- /var/run:/var/run:ro
|
||||
- /sys:/sys:ro
|
||||
- /var/lib/docker/:/var/lib/docker:ro
|
||||
networks:
|
||||
- core_network
|
||||
restart: unless-stopped
|
||||
prometheus:
|
||||
image: prom/prometheus:latest
|
||||
container_name: prometheus
|
||||
ports:
|
||||
- "9090:9090"
|
||||
volumes:
|
||||
- "./packages/prometheus/prometheus.prod.yml:/etc/prometheus/prometheus.yml"
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- prometheus_data:/prometheus
|
||||
command:
|
||||
- "--config.file=/etc/prometheus/prometheus.yml"
|
||||
- "--web.enable-remote-write-receiver"
|
||||
networks:
|
||||
- traefik
|
||||
- core_network
|
||||
|
||||
core-server:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: ./apps/core-server/Dockerfile
|
||||
env_file:
|
||||
- .env.prod
|
||||
deploy:
|
||||
replicas: 1
|
||||
labels:
|
||||
- "traefik.enable=false"
|
||||
networks:
|
||||
- postgres_network
|
||||
- core_network
|
||||
|
||||
docs:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: ./apps/docs/Dockerfile
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.docs.rule=Host(`docs.premiumag.de`)"
|
||||
- "traefik.http.routers.docs.entrypoints=websecure"
|
||||
- "traefik.http.routers.docs.tls.certresolver=le"
|
||||
- "traefik.http.services.docs.loadbalancer.server.port=80"
|
||||
|
||||
networks:
|
||||
- traefik
|
||||
|
||||
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
|
||||
- traefik
|
||||
|
||||
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"]
|
||||
|
||||
livekit:
|
||||
image: livekit/livekit-server
|
||||
command: --config /etc/livekit.yaml --node-ip 37.221.196.140
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- traefik
|
||||
- core_network
|
||||
ports:
|
||||
- "7881:7881"
|
||||
- "7882:7882/udp"
|
||||
depends_on:
|
||||
- redis
|
||||
volumes:
|
||||
- ./packages/livekit/livekit.yaml:/etc/livekit.yaml
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.livekit.rule=Host(`livekit.premiumag.de`)"
|
||||
- "traefik.http.routers.livekit.entrypoints=websecure"
|
||||
- "traefik.http.routers.livekit.tls=true"
|
||||
- "traefik.http.routers.livekit.tls.certresolver=le"
|
||||
- "traefik.http.routers.livekit.service=livekit"
|
||||
- "traefik.http.services.livekit.loadbalancer.server.port=7880"
|
||||
|
||||
volumes:
|
||||
postgres-data:
|
||||
moodle_data:
|
||||
moodle_database:
|
||||
moodle_moodledata:
|
||||
redis_data:
|
||||
driver: local
|
||||
portainer_data:
|
||||
prometheus_data:
|
||||
@@ -8,6 +8,7 @@
|
||||
"lint": "turbo lint",
|
||||
"studio": "turbo run studio",
|
||||
"prod-start": "docker-compose --env-file .env.prod -f 'docker-compose.prod.yml' up -d --build",
|
||||
"staging-start": "docker-compose --env-file .env.staging -f 'docker-compose.staging.yml' up -d --build",
|
||||
"format": "prettier --write \"**/*.{ts,tsx,md}\""
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
Reference in New Issue
Block a user