Adds standard JWT claims (audience and issuer) to access tokens and updates config for these fields. Refactors multiplayer room chat channel logic to ensure reliable user join/leave with retry mechanisms, improves error handling and cleanup, and ensures host is correctly added as a participant. Updates Docker entrypoint for better compatibility and connection handling, modifies Docker Compose and Nginx config for improved deployment and proxy header forwarding.
130 lines
3.1 KiB
YAML
130 lines
3.1 KiB
YAML
version: '3.8'
|
|
|
|
services:
|
|
app:
|
|
# or use
|
|
# image: mingxuangame/osu-lazer-api-osurx:latest
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile-osurx
|
|
container_name: osu_api_server_osurx
|
|
environment:
|
|
- MYSQL_HOST=mysql
|
|
- MYSQL_PORT=3306
|
|
- REDIS_URL=redis://redis:6379/0
|
|
- ENABLE_OSU_RX=true
|
|
- ENABLE_OSU_AP=true
|
|
- ENABLE_ALL_MODS_PP=true
|
|
- ENABLE_SUPPORTER_FOR_ALL_USERS=true
|
|
- ENABLE_ALL_BEATMAP_LEADERBOARD=true
|
|
- NEW_RELIC_ENVIRONMENT=production
|
|
env_file:
|
|
- .env
|
|
depends_on:
|
|
mysql:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
volumes:
|
|
- ./replays:/app/replays
|
|
- ./storage:/app/storage
|
|
- ./static:/app/static
|
|
- ./logs:/app/logs
|
|
restart: unless-stopped
|
|
networks:
|
|
- osu-network
|
|
|
|
mysql:
|
|
image: mysql:8.0
|
|
container_name: osu_api_mysql_osurx
|
|
environment:
|
|
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
|
|
- MYSQL_DATABASE=${MYSQL_DATABASE}
|
|
- MYSQL_USER=${MYSQL_USER}
|
|
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
|
|
env_file:
|
|
- .env
|
|
volumes:
|
|
- mysql_data:/var/lib/mysql
|
|
- ./mysql-init:/docker-entrypoint-initdb.d
|
|
healthcheck:
|
|
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
|
|
timeout: 20s
|
|
retries: 10
|
|
interval: 10s
|
|
start_period: 40s
|
|
restart: unless-stopped
|
|
networks:
|
|
- osu-network
|
|
|
|
redis:
|
|
image: redis:7-alpine
|
|
container_name: osu_api_redis_osurx
|
|
env_file:
|
|
- .env
|
|
volumes:
|
|
- redis_data:/data
|
|
healthcheck:
|
|
test: ["CMD", "redis-cli", "ping"]
|
|
timeout: 5s
|
|
retries: 5
|
|
interval: 10s
|
|
start_period: 10s
|
|
restart: unless-stopped
|
|
networks:
|
|
- osu-network
|
|
command: redis-server --appendonly yes
|
|
|
|
spectator:
|
|
image: ghcr.io/googuteam/osu-server-spectator:latest
|
|
pull_policy: never
|
|
environment:
|
|
- SAVE_REPLAYS=${SAVE_REPLAYS:-}
|
|
- REPLAY_UPLOAD_THREADS=${REPLAY_UPLOAD_THREADS:-1}
|
|
- REPLAYS_PATH=${REPLAYS_PATH:-replays}
|
|
- S3_KEY=${S3_KEY:-}
|
|
- S3_SECRET=${S3_SECRET:-}
|
|
- REPLAYS_BUCKET=${REPLAYS_BUCKET:-}
|
|
- TRACK_BUILD_USER_COUNTS=${TRACK_BUILD_USER_COUNTS:-}
|
|
- SERVER_PORT=${SERVER_PORT:-80}
|
|
- REDIS_HOST=redis
|
|
- DD_AGENT_HOST=${DD_AGENT_HOST:-localhost}
|
|
- DB_HOST=mysql
|
|
- DB_PORT=3306
|
|
- DB_USER=${MYSQL_USER}
|
|
- DB_PASSWORD=${MYSQL_PASSWORD}
|
|
- DB_NAME=${MYSQL_DATABASE}
|
|
- SENTRY_DSN=${SENTRY_DSN:-}
|
|
- SHARED_INTEROP_DOMAIN=http://app:8000
|
|
- SHARED_INTEROP_SECRET=${SHARED_INTEROP_SECRET:-}
|
|
- JWT_SECRET_KEY=${JWT_SECRET_KEY}
|
|
- USE_LEGACY_RSA_AUTH=0
|
|
env_file:
|
|
- .env
|
|
volumes:
|
|
- ./replays:/app/replays
|
|
depends_on:
|
|
- app
|
|
- mysql
|
|
- redis
|
|
restart: unless-stopped
|
|
networks:
|
|
- osu-network
|
|
|
|
nginx:
|
|
image: docker.1ms.run/nginx:1.25-alpine
|
|
ports:
|
|
- "8000:80"
|
|
volumes:
|
|
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
|
|
restart: unless-stopped
|
|
networks:
|
|
- osu-network
|
|
|
|
volumes:
|
|
mysql_data:
|
|
redis_data:
|
|
|
|
networks:
|
|
osu-network:
|
|
driver: bridge |