Files
g0v0-server/docker-compose-osurx.yml
咕谷酱 616656638d Improve JWT claims and chat channel reliability
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.
2025-08-26 13:18:11 +08:00

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