feat(2.0): 为 2.0 部署独立的 presence-service-2

- 在 docker-compose.2.0.yml 添加 presence-service-2 (port 3027)
- 使用独立数据库 rwa_mining_presence,隔离 2.0 用户 DAU/在线数据
- Redis DB 17(2.0 其他服务已用 8,10,12,13,14,15,16)
- postgres-2 POSTGRES_MULTIPLE_DATABASES 追加 rwa_mining_presence
- 复用 presence-service 代码,与 auth-service 共享 JWT_SECRET

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
hailin 2026-03-05 18:39:44 -08:00
parent b9cfa67835
commit 5eb4afa2f9
1 changed files with 44 additions and 1 deletions

View File

@ -35,7 +35,7 @@ services:
TZ: Asia/Shanghai TZ: Asia/Shanghai
POSTGRES_USER: ${POSTGRES_USER:-rwa_user} POSTGRES_USER: ${POSTGRES_USER:-rwa_user}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-rwa_secure_password} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-rwa_secure_password}
POSTGRES_MULTIPLE_DATABASES: rwa_contribution,rwa_mining,rwa_trading,rwa_mining_admin,rwa_auth,rwa_mining_wallet,rwa_mining_blockchain POSTGRES_MULTIPLE_DATABASES: rwa_contribution,rwa_mining,rwa_trading,rwa_mining_admin,rwa_auth,rwa_mining_wallet,rwa_mining_blockchain,rwa_mining_presence
ports: ports:
# 安全加固: 仅绑定 127.0.0.1,禁止公网直连数据库 # 安全加固: 仅绑定 127.0.0.1,禁止公网直连数据库
# deploy-mining.sh 通过 docker exec 访问,不受影响 # deploy-mining.sh 通过 docker exec 访问,不受影响
@ -493,6 +493,49 @@ services:
networks: networks:
- rwa-2-network - rwa-2-network
presence-service-2:
build:
context: ./presence-service
dockerfile: Dockerfile
container_name: rwa-presence-service-2
depends_on:
postgres-2:
condition: service_healthy
required: false
redis-2:
condition: service_healthy
required: false
environment:
NODE_ENV: production
TZ: Asia/Shanghai
PORT: 3027
# PostgreSQL - 2.0 独立的 presence 数据库
DATABASE_URL: postgresql://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-postgres}@${POSTGRES_HOST:-postgres}:${POSTGRES_PORT:-5432}/rwa_mining_presence?schema=public
# Redis - 使用 DB 17 隔离 (2.0 已用: 8,10,12,13,14,15,16)
REDIS_HOST: ${REDIS_HOST:-redis}
REDIS_PORT: ${REDIS_PORT:-6379}
REDIS_PASSWORD: ${REDIS_PASSWORD:-}
REDIS_DB: 17
# Kafka - 发布 session-started 事件
KAFKA_BROKERS: ${KAFKA_BROKERS:-kafka:29092}
# JWT - 与 auth-service 共享密钥以验证 mining-app token
JWT_SECRET: ${JWT_SECRET:-your-jwt-secret-change-in-production}
ADMIN_JWT_SECRET: ${ADMIN_JWT_SECRET:-your-admin-jwt-secret-change-in-production}
# 在线窗口: 180 秒无心跳视为离线
PRESENCE_WINDOW_SECONDS: 180
SNAPSHOT_INTERVAL_SECONDS: 60
ports:
- "3027:3027"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3027/api/v1/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
restart: unless-stopped
networks:
- rwa-2-network
# =========================================================================== # ===========================================================================
# Frontend Services (2.0) # Frontend Services (2.0)
# =========================================================================== # ===========================================================================