518 lines
18 KiB
YAML
518 lines
18 KiB
YAML
# =============================================================================
|
|
# RWA Mining Ecosystem 2.0 - Docker Compose
|
|
# =============================================================================
|
|
#
|
|
# 支持两种部署模式 (通过 DEPLOY_MODE 环境变量切换):
|
|
#
|
|
# 1. shared 模式 (默认): 共享 1.0 的 PostgreSQL/Redis/Kafka
|
|
# - 网络: services_rwa-network (由 1.0 创建)
|
|
# - 基础设施: 复用 1.0 的 postgres, redis, kafka 容器
|
|
#
|
|
# 2. standalone 模式: 独立部署在单独服务器上
|
|
# - 网络: rwa-2-network (本地)
|
|
# - 基础设施: 本地 postgres-2, redis-2 + 远程 Kafka (192.168.1.111:9093)
|
|
# - 启动命令需加 --profile standalone
|
|
#
|
|
# Usage:
|
|
# # Shared 模式 (默认):
|
|
# docker compose -f docker-compose.2.0.yml --env-file .env up -d
|
|
#
|
|
# # Standalone 模式:
|
|
# docker compose -f docker-compose.2.0.yml --profile standalone --env-file .env up -d
|
|
#
|
|
# =============================================================================
|
|
|
|
services:
|
|
# ===========================================================================
|
|
# Infrastructure (standalone 模式专属, 通过 --profile standalone 启用)
|
|
# ===========================================================================
|
|
|
|
postgres-2:
|
|
image: postgres:16-alpine
|
|
container_name: rwa-postgres-2
|
|
profiles: ["standalone"]
|
|
environment:
|
|
TZ: Asia/Shanghai
|
|
POSTGRES_USER: ${POSTGRES_USER:-rwa_user}
|
|
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
|
|
ports:
|
|
- "5432:5432"
|
|
volumes:
|
|
- postgres_2_data:/var/lib/postgresql/data
|
|
- ./init-multiple-dbs.sh:/docker-entrypoint-initdb.d/init-multiple-dbs.sh:ro
|
|
command: >
|
|
postgres
|
|
-c wal_level=logical
|
|
-c max_replication_slots=20
|
|
-c max_wal_senders=20
|
|
-c max_connections=200
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-rwa_user}"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 10
|
|
restart: unless-stopped
|
|
networks:
|
|
- rwa-2-network
|
|
|
|
redis-2:
|
|
image: redis:7-alpine
|
|
container_name: rwa-redis-2
|
|
profiles: ["standalone"]
|
|
environment:
|
|
TZ: Asia/Shanghai
|
|
command: redis-server --appendonly yes --databases 20
|
|
ports:
|
|
- "6379:6379"
|
|
volumes:
|
|
- redis_2_data:/data
|
|
healthcheck:
|
|
test: ["CMD", "redis-cli", "ping"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 10
|
|
restart: unless-stopped
|
|
networks:
|
|
- rwa-2-network
|
|
|
|
debezium-2:
|
|
image: debezium/connect:2.4
|
|
container_name: rwa-debezium-2
|
|
profiles: ["standalone"]
|
|
depends_on:
|
|
postgres-2:
|
|
condition: service_healthy
|
|
ports:
|
|
- "8084:8083"
|
|
environment:
|
|
TZ: Asia/Shanghai
|
|
GROUP_ID: debezium-connect-2
|
|
BOOTSTRAP_SERVERS: ${KAFKA_BROKERS:-kafka:29092}
|
|
CONFIG_STORAGE_TOPIC: debezium_2_configs
|
|
OFFSET_STORAGE_TOPIC: debezium_2_offsets
|
|
STATUS_STORAGE_TOPIC: debezium_2_statuses
|
|
CONFIG_STORAGE_REPLICATION_FACTOR: 1
|
|
OFFSET_STORAGE_REPLICATION_FACTOR: 1
|
|
STATUS_STORAGE_REPLICATION_FACTOR: 1
|
|
KEY_CONVERTER: org.apache.kafka.connect.json.JsonConverter
|
|
VALUE_CONVERTER: org.apache.kafka.connect.json.JsonConverter
|
|
KEY_CONVERTER_SCHEMAS_ENABLE: "false"
|
|
VALUE_CONVERTER_SCHEMAS_ENABLE: "false"
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:8083/"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 5
|
|
start_period: 60s
|
|
restart: unless-stopped
|
|
networks:
|
|
- rwa-2-network
|
|
|
|
# ===========================================================================
|
|
# Backend Services (2.0)
|
|
# ===========================================================================
|
|
|
|
contribution-service:
|
|
build:
|
|
context: ./contribution-service
|
|
dockerfile: Dockerfile
|
|
container_name: rwa-contribution-service
|
|
depends_on:
|
|
postgres-2:
|
|
condition: service_healthy
|
|
required: false
|
|
redis-2:
|
|
condition: service_healthy
|
|
required: false
|
|
environment:
|
|
NODE_ENV: production
|
|
TZ: Asia/Shanghai
|
|
PORT: 3020
|
|
# PostgreSQL - 使用独立的数据库
|
|
DATABASE_URL: postgresql://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-postgres}@${POSTGRES_HOST:-postgres}:${POSTGRES_PORT:-5432}/rwa_contribution?schema=public
|
|
# Redis - 使用 DB 10 隔离
|
|
REDIS_HOST: ${REDIS_HOST:-redis}
|
|
REDIS_PORT: ${REDIS_PORT:-6379}
|
|
REDIS_PASSWORD: ${REDIS_PASSWORD:-}
|
|
REDIS_DB: 10
|
|
# Kafka - 消费 CDC 事件 (从1.0服务同步数据)
|
|
KAFKA_BROKERS: ${KAFKA_BROKERS:-kafka:29092}
|
|
# 认种订单 (planting-service)
|
|
CDC_TOPIC_ADOPTIONS: ${CDC_TOPIC_ADOPTIONS:-cdc.planting.public.planting_orders}
|
|
# 推荐关系 (referral-service)
|
|
CDC_TOPIC_REFERRALS: ${CDC_TOPIC_REFERRALS:-cdc.referral.public.referral_relationships}
|
|
CDC_CONSUMER_GROUP: contribution-service-cdc-group
|
|
# JWT 配置 (与 auth-service 共享密钥以验证 token)
|
|
JWT_SECRET: ${JWT_SECRET:-your-jwt-secret-change-in-production}
|
|
ports:
|
|
- "3020:3020"
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:3020/api/v2/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 60s
|
|
restart: unless-stopped
|
|
networks:
|
|
- rwa-2-network
|
|
|
|
mining-service:
|
|
build:
|
|
context: ./mining-service
|
|
dockerfile: Dockerfile
|
|
container_name: rwa-mining-service
|
|
depends_on:
|
|
postgres-2:
|
|
condition: service_healthy
|
|
required: false
|
|
redis-2:
|
|
condition: service_healthy
|
|
required: false
|
|
environment:
|
|
NODE_ENV: production
|
|
TZ: Asia/Shanghai
|
|
PORT: 3021
|
|
# PostgreSQL - 使用独立的数据库
|
|
DATABASE_URL: postgresql://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-postgres}@${POSTGRES_HOST:-postgres}:${POSTGRES_PORT:-5432}/rwa_mining?schema=public
|
|
# Redis - 使用 DB 16 隔离 (避免与 1.0 blockchain-service 的 DB 11 冲突)
|
|
REDIS_HOST: ${REDIS_HOST:-redis}
|
|
REDIS_PORT: ${REDIS_PORT:-6379}
|
|
REDIS_PASSWORD: ${REDIS_PASSWORD:-}
|
|
REDIS_DB: 16
|
|
# Kafka
|
|
KAFKA_BROKERS: ${KAFKA_BROKERS:-kafka:29092}
|
|
# JWT 配置 (与 auth-service 共享密钥以验证 token)
|
|
JWT_SECRET: ${JWT_SECRET:-your-jwt-secret-change-in-production}
|
|
# 2.0 内部服务调用
|
|
CONTRIBUTION_SERVICE_URL: http://contribution-service:3020
|
|
ports:
|
|
- "3021:3021"
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:3021/api/v2/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 60s
|
|
restart: unless-stopped
|
|
networks:
|
|
- rwa-2-network
|
|
|
|
trading-service:
|
|
build:
|
|
context: ./trading-service
|
|
dockerfile: Dockerfile
|
|
container_name: rwa-trading-service
|
|
depends_on:
|
|
postgres-2:
|
|
condition: service_healthy
|
|
required: false
|
|
redis-2:
|
|
condition: service_healthy
|
|
required: false
|
|
environment:
|
|
NODE_ENV: production
|
|
TZ: Asia/Shanghai
|
|
PORT: 3022
|
|
# PostgreSQL - 使用独立的数据库
|
|
DATABASE_URL: postgresql://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-postgres}@${POSTGRES_HOST:-postgres}:${POSTGRES_PORT:-5432}/rwa_trading?schema=public
|
|
# Redis - 使用 DB 12 隔离
|
|
REDIS_HOST: ${REDIS_HOST:-redis}
|
|
REDIS_PORT: ${REDIS_PORT:-6379}
|
|
REDIS_PASSWORD: ${REDIS_PASSWORD:-}
|
|
REDIS_DB: 12
|
|
# Kafka
|
|
KAFKA_BROKERS: ${KAFKA_BROKERS:-kafka:29092}
|
|
# 2.0 内部服务调用
|
|
MINING_SERVICE_URL: http://mining-service:3021
|
|
AUTH_SERVICE_URL: http://auth-service:3024
|
|
MINING_ADMIN_SERVICE_URL: http://mining-admin-service:3023
|
|
MINING_BLOCKCHAIN_SERVICE_URL: http://mining-blockchain-service:3026
|
|
# JWT 配置 (与 auth-service 共享密钥以验证 token)
|
|
JWT_SECRET: ${JWT_SECRET:-your-jwt-secret-change-in-production}
|
|
# 做市商钱包 (MPC) - 初始化时写入数据库
|
|
FUSDT_MARKET_MAKER_USERNAME: ${FUSDT_MARKET_MAKER_USERNAME:-}
|
|
FUSDT_MARKET_MAKER_ADDRESS: ${FUSDT_MARKET_MAKER_ADDRESS:-}
|
|
EUSDT_MARKET_MAKER_USERNAME: ${EUSDT_MARKET_MAKER_USERNAME:-}
|
|
EUSDT_MARKET_MAKER_ADDRESS: ${EUSDT_MARKET_MAKER_ADDRESS:-}
|
|
volumes:
|
|
- trading-uploads:/app/uploads
|
|
ports:
|
|
- "3022:3022"
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:3022/api/v2/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 60s
|
|
restart: unless-stopped
|
|
networks:
|
|
- rwa-2-network
|
|
|
|
mining-admin-service:
|
|
build:
|
|
context: ./mining-admin-service
|
|
dockerfile: Dockerfile
|
|
container_name: rwa-mining-admin-service
|
|
depends_on:
|
|
postgres-2:
|
|
condition: service_healthy
|
|
required: false
|
|
redis-2:
|
|
condition: service_healthy
|
|
required: false
|
|
environment:
|
|
NODE_ENV: production
|
|
TZ: Asia/Shanghai
|
|
PORT: 3023
|
|
# PostgreSQL - 使用独立的数据库
|
|
DATABASE_URL: postgresql://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-postgres}@${POSTGRES_HOST:-postgres}:${POSTGRES_PORT:-5432}/rwa_mining_admin?schema=public
|
|
# Redis - 使用 DB 13 隔离
|
|
REDIS_HOST: ${REDIS_HOST:-redis}
|
|
REDIS_PORT: ${REDIS_PORT:-6379}
|
|
REDIS_PASSWORD: ${REDIS_PASSWORD:-}
|
|
REDIS_DB: 13
|
|
# Kafka - 消费 2.0 服务间事件
|
|
KAFKA_BROKERS: ${KAFKA_BROKERS:-kafka:29092}
|
|
CDC_CONSUMER_GROUP: mining-admin-service-cdc-group
|
|
# CDC Topics - 从各 2.0 服务同步数据
|
|
CDC_TOPIC_USERS: ${CDC_TOPIC_ADMIN_USERS:-mining-admin.auth.users}
|
|
CDC_TOPIC_CONTRIBUTION: ${CDC_TOPIC_ADMIN_CONTRIBUTION:-mining-admin.contribution.accounts}
|
|
CDC_TOPIC_MINING: ${CDC_TOPIC_ADMIN_MINING:-mining-admin.mining.accounts}
|
|
CDC_TOPIC_TRADING: ${CDC_TOPIC_ADMIN_TRADING:-mining-admin.trading.accounts}
|
|
# 2.0 内部服务调用(备用)
|
|
CONTRIBUTION_SERVICE_URL: http://contribution-service:3020
|
|
MINING_SERVICE_URL: http://mining-service:3021
|
|
TRADING_SERVICE_URL: http://trading-service:3022
|
|
AUTH_SERVICE_URL: http://auth-service:3024
|
|
JWT_SECRET: ${ADMIN_JWT_SECRET:-your-admin-jwt-secret-change-in-production}
|
|
# APK 下载地址前缀(通过 Kong 网关 /mining-admin 路由访问)
|
|
UPLOAD_BASE_URL: https://mapi.szaiai.com/mining-admin/downloads
|
|
UPLOAD_DIR: ./uploads
|
|
volumes:
|
|
- mining-admin-uploads:/app/uploads
|
|
ports:
|
|
- "3023:3023"
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:3023/api/v2/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 60s
|
|
restart: unless-stopped
|
|
networks:
|
|
- rwa-2-network
|
|
|
|
auth-service:
|
|
build:
|
|
context: ./auth-service
|
|
dockerfile: Dockerfile
|
|
container_name: rwa-auth-service
|
|
depends_on:
|
|
postgres-2:
|
|
condition: service_healthy
|
|
required: false
|
|
redis-2:
|
|
condition: service_healthy
|
|
required: false
|
|
environment:
|
|
NODE_ENV: production
|
|
TZ: Asia/Shanghai
|
|
PORT: 3024
|
|
# PostgreSQL - 使用独立的数据库
|
|
DATABASE_URL: postgresql://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-postgres}@${POSTGRES_HOST:-postgres}:${POSTGRES_PORT:-5432}/rwa_auth?schema=public
|
|
# Redis - 使用 DB 14 隔离
|
|
REDIS_HOST: ${REDIS_HOST:-redis}
|
|
REDIS_PORT: ${REDIS_PORT:-6379}
|
|
REDIS_PASSWORD: ${REDIS_PASSWORD:-}
|
|
REDIS_DB: 14
|
|
# Kafka - 消费 CDC 事件 (从1.0 identity-service同步用户)
|
|
KAFKA_BROKERS: ${KAFKA_BROKERS:-kafka:29092}
|
|
CDC_ENABLED: "true"
|
|
CDC_TOPIC_USERS: ${CDC_TOPIC_USERS:-cdc.identity.public.user_accounts}
|
|
CDC_TOPIC_WALLET_ADDRESSES: ${CDC_TOPIC_WALLET_ADDRESSES:-cdc.identity.public.wallet_addresses}
|
|
CDC_CONSUMER_GROUP: auth-service-cdc-group
|
|
# JWT 配置
|
|
JWT_SECRET: ${JWT_SECRET:-your-jwt-secret-change-in-production}
|
|
JWT_EXPIRES_IN: ${JWT_EXPIRES_IN:-7d}
|
|
JWT_REFRESH_EXPIRES_IN: ${JWT_REFRESH_EXPIRES_IN:-30d}
|
|
# SMS 配置
|
|
SMS_ACCESS_KEY_ID: ${SMS_ACCESS_KEY_ID:-}
|
|
SMS_ACCESS_KEY_SECRET: ${SMS_ACCESS_KEY_SECRET:-}
|
|
SMS_SIGN_NAME: ${SMS_SIGN_NAME:-榴莲生态}
|
|
SMS_TEMPLATE_CODE: ${SMS_TEMPLATE_CODE:-}
|
|
ports:
|
|
- "3024:3024"
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:3024/api/v2/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 60s
|
|
restart: unless-stopped
|
|
networks:
|
|
- rwa-2-network
|
|
|
|
mining-wallet-service:
|
|
build:
|
|
context: ./mining-wallet-service
|
|
dockerfile: Dockerfile
|
|
container_name: rwa-mining-wallet-service
|
|
depends_on:
|
|
postgres-2:
|
|
condition: service_healthy
|
|
required: false
|
|
redis-2:
|
|
condition: service_healthy
|
|
required: false
|
|
environment:
|
|
NODE_ENV: production
|
|
TZ: Asia/Shanghai
|
|
PORT: 3025
|
|
# PostgreSQL - 使用独立的数据库
|
|
DATABASE_URL: postgresql://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-postgres}@${POSTGRES_HOST:-postgres}:${POSTGRES_PORT:-5432}/rwa_mining_wallet?schema=public
|
|
# Redis - 使用 DB 15 隔离
|
|
REDIS_HOST: ${REDIS_HOST:-redis}
|
|
REDIS_PORT: ${REDIS_PORT:-6379}
|
|
REDIS_PASSWORD: ${REDIS_PASSWORD:-}
|
|
REDIS_DB: 15
|
|
# Kafka
|
|
KAFKA_BROKERS: ${KAFKA_BROKERS:-kafka:29092}
|
|
# JWT 配置
|
|
JWT_SECRET: ${JWT_SECRET:-your-jwt-secret-change-in-production}
|
|
# KAVA 区块链配置
|
|
KAVA_RPC_URL: ${KAVA_RPC_URL:-https://evm.kava.io}
|
|
KAVA_CHAIN_ID: ${KAVA_CHAIN_ID:-2222}
|
|
ports:
|
|
- "3025:3025"
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:3025/api/v2/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 60s
|
|
restart: unless-stopped
|
|
networks:
|
|
- rwa-2-network
|
|
|
|
mining-blockchain-service:
|
|
build:
|
|
context: ./mining-blockchain-service
|
|
dockerfile: Dockerfile
|
|
container_name: rwa-mining-blockchain-service
|
|
depends_on:
|
|
postgres-2:
|
|
condition: service_healthy
|
|
required: false
|
|
redis-2:
|
|
condition: service_healthy
|
|
required: false
|
|
environment:
|
|
NODE_ENV: production
|
|
TZ: Asia/Shanghai
|
|
PORT: 3026
|
|
# PostgreSQL - 使用独立的数据库
|
|
DATABASE_URL: postgresql://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-postgres}@${POSTGRES_HOST:-postgres}:${POSTGRES_PORT:-5432}/rwa_mining_blockchain?schema=public
|
|
# Redis - 使用 DB 8 隔离 (0-15 有效范围)
|
|
REDIS_HOST: ${REDIS_HOST:-redis}
|
|
REDIS_PORT: ${REDIS_PORT:-6379}
|
|
REDIS_PASSWORD: ${REDIS_PASSWORD:-}
|
|
REDIS_DB: 8
|
|
# Kafka - 用于事件发布
|
|
KAFKA_BROKERS: ${KAFKA_BROKERS:-kafka:29092}
|
|
# JWT 配置
|
|
JWT_SECRET: ${JWT_SECRET:-your-jwt-secret-change-in-production}
|
|
# MPC system 直调配置 (account-service port 4000)
|
|
MPC_ACCOUNT_SERVICE_URL: ${MPC_ACCOUNT_SERVICE_URL:-http://localhost:4000}
|
|
MPC_JWT_SECRET: ${MPC_JWT_SECRET:-}
|
|
# 区块链配置
|
|
NETWORK_MODE: ${NETWORK_MODE:-mainnet}
|
|
# KAVA 配置
|
|
KAVA_RPC_URL: ${KAVA_RPC_URL:-https://evm.kava.io}
|
|
# RPC 故障转移:逗号分隔的多个端点,主端点失败 3 分钟后自动切换
|
|
KAVA_RPC_URLS: ${KAVA_RPC_URLS:-https://evm.kava.io,https://evm.kava-rpc.com,https://kava-evm-rpc.publicnode.com,https://rpc.ankr.com/kava_evm}
|
|
KAVA_CHAIN_ID: ${KAVA_CHAIN_ID:-2222}
|
|
KAVA_USDT_CONTRACT: ${KAVA_USDT_CONTRACT:-0xA9F3A35dBa8699c8C681D8db03F0c1A8CEB9D7c3}
|
|
# 积分股合约 (eUSDT - Energy USDT)
|
|
KAVA_EUSDT_CONTRACT: ${KAVA_EUSDT_CONTRACT:-0x7C3275D808eFbAE90C06C7E3A9AfDdcAa8563931}
|
|
# 积分值合约 (fUSDT - Future USDT)
|
|
KAVA_FUSDT_CONTRACT: ${KAVA_FUSDT_CONTRACT:-0x14dc4f7d3E4197438d058C3D156dd9826A161134}
|
|
# BSC 配置
|
|
BSC_RPC_URL: ${BSC_RPC_URL:-https://bsc-dataseed.binance.org}
|
|
BSC_CHAIN_ID: ${BSC_CHAIN_ID:-56}
|
|
BSC_USDT_CONTRACT: ${BSC_USDT_CONTRACT:-0x55d398326f99059fF775485246999027B3197955}
|
|
# C2C Bot 热钱包 (MPC)
|
|
C2C_BOT_WALLET_USERNAME: ${C2C_BOT_WALLET_USERNAME:-wallet-29b09647}
|
|
C2C_BOT_WALLET_ADDRESS: ${C2C_BOT_WALLET_ADDRESS:-0x30da9Eb4C49914fDb9d711cE26AB446d68fE4Bc4}
|
|
# eUSDT (积分股) 做市商钱包 (MPC)
|
|
EUSDT_MARKET_MAKER_USERNAME: ${EUSDT_MARKET_MAKER_USERNAME:-}
|
|
EUSDT_MARKET_MAKER_ADDRESS: ${EUSDT_MARKET_MAKER_ADDRESS:-}
|
|
# fUSDT (积分值) 做市商钱包 (MPC)
|
|
FUSDT_MARKET_MAKER_USERNAME: ${FUSDT_MARKET_MAKER_USERNAME:-}
|
|
FUSDT_MARKET_MAKER_ADDRESS: ${FUSDT_MARKET_MAKER_ADDRESS:-}
|
|
# 区块扫描配置
|
|
BLOCK_SCAN_INTERVAL_MS: ${BLOCK_SCAN_INTERVAL_MS:-5000}
|
|
BLOCK_CONFIRMATIONS_REQUIRED: ${BLOCK_CONFIRMATIONS_REQUIRED:-12}
|
|
ports:
|
|
- "3026:3026"
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:3026/api/v1/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 60s
|
|
restart: unless-stopped
|
|
networks:
|
|
- rwa-2-network
|
|
|
|
# ===========================================================================
|
|
# Frontend Services (2.0)
|
|
# ===========================================================================
|
|
|
|
mining-admin-web:
|
|
build:
|
|
context: ../../frontend/mining-admin-web
|
|
dockerfile: Dockerfile
|
|
container_name: rwa-mining-admin-web
|
|
environment:
|
|
NODE_ENV: production
|
|
TZ: Asia/Shanghai
|
|
PORT: 3100
|
|
NEXT_PUBLIC_API_URL: http://mining-admin-service:3023
|
|
NEXT_PUBLIC_APP_NAME: 挖矿管理后台
|
|
ports:
|
|
- "3100:3100"
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:3100/"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 15s
|
|
restart: unless-stopped
|
|
networks:
|
|
- rwa-2-network
|
|
|
|
# =============================================================================
|
|
# Volumes
|
|
# =============================================================================
|
|
volumes:
|
|
mining-admin-uploads:
|
|
driver: local
|
|
trading-uploads:
|
|
driver: local
|
|
# standalone 模式专属 volumes
|
|
postgres_2_data:
|
|
driver: local
|
|
redis_2_data:
|
|
driver: local
|
|
|
|
# =============================================================================
|
|
# Network
|
|
# =============================================================================
|
|
# shared 模式 (默认): RWA_NETWORK_NAME 未设置,使用 services_rwa-network (1.0 已创建)
|
|
# standalone 模式: deploy-mining.sh 设置 RWA_NETWORK_NAME=rwa-2-network 并预先创建
|
|
networks:
|
|
rwa-2-network:
|
|
external: true
|
|
name: ${RWA_NETWORK_NAME:-services_rwa-network}
|