Skip to content

中间件部署

后端平台需要四个中间件服务。请在部署任何应用服务之前先部署它们。

快速启动(Docker Compose)

如果你有 ops 仓库,可以一次性启动所有中间件:

bash
cd slaunchx-ops-devops/projects/slaunchx-backend-platform/deploy/docker
docker compose -f docker-compose.test.yml up -d mysql redis rabbitmq minio

否则,请按照以下手动步骤操作。

1. MySQL 8.4

启动容器

bash
docker run -d \
  --name slaunchx-mysql-test \
  --network slaunchx-intra \
  -p 127.0.0.1:18306:3306 \
  -e MYSQL_ROOT_PASSWORD=<root-password> \
  -e MYSQL_DATABASE=slaunchx \
  -e MYSQL_USER=slaunchx \
  -e MYSQL_PASSWORD=<app-password> \
  -v mysql-test-data:/var/lib/mysql \
  --restart unless-stopped \
  mysql:8.4 \
  --character-set-server=utf8mb4 \
  --collation-server=utf8mb4_unicode_ci \
  --max-connections=500

创建额外数据库

钱包服务需要独立的数据库:

bash
docker exec -i slaunchx-mysql-test mysql -uroot -p<root-password> <<'SQL'
CREATE DATABASE IF NOT EXISTS slaunchx_tron_wallet
  CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS slaunchx_solana_wallet
  CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL PRIVILEGES ON slaunchx_tron_wallet.* TO 'slaunchx'@'%';
GRANT ALL PRIVILEGES ON slaunchx_solana_wallet.* TO 'slaunchx'@'%';
FLUSH PRIVILEGES;
SQL

验证

bash
docker exec -it slaunchx-mysql-test mysql -uslaunchx -p<app-password> -e "SHOW DATABASES;"
# Expected: slaunchx, slaunchx_tron_wallet, slaunchx_solana_wallet

数据库表结构

表由 Flyway 在应用首次启动时自动创建。请勿手动创建表。

2. Redis 7.2

启动容器

bash
docker run -d \
  --name slaunchx-redis-test \
  --network slaunchx-intra \
  -p 127.0.0.1:18379:6379 \
  -v redis-test-data:/data \
  --restart unless-stopped \
  redis:7.2-alpine \
  redis-server --appendonly yes --maxmemory 256mb --maxmemory-policy allkeys-lru \
  --requirepass <redis-password>

验证

bash
docker exec -it slaunchx-redis-test redis-cli -a <redis-password> PING
# Expected: PONG

3. RabbitMQ 3.13

启动容器

bash
docker run -d \
  --name slaunchx-rabbitmq-test \
  --network slaunchx-intra \
  -p 127.0.0.1:18572:5672 \
  -p 127.0.0.1:18672:15672 \
  -e RABBITMQ_DEFAULT_USER=slaunchx \
  -e RABBITMQ_DEFAULT_PASS=<rabbitmq-password> \
  -v rabbitmq-test-data:/var/lib/rabbitmq \
  --restart unless-stopped \
  rabbitmq:3.13-management

端口 18672 提供管理界面 UI——便于监控队列和连接。

验证

bash
# AMQP connection
docker exec -it slaunchx-rabbitmq-test rabbitmqctl status | head -5

# Management UI (from the host)
curl -s -u slaunchx:<rabbitmq-password> http://127.0.0.1:18672/api/overview | head -1
# Expected: JSON response with RabbitMQ version

4. MinIO(S3 兼容对象存储)

启动容器

bash
docker run -d \
  --name slaunchx-minio-test \
  --network slaunchx-intra \
  -p 127.0.0.1:18000:9000 \
  -p 127.0.0.1:18001:9001 \
  -e MINIO_ROOT_USER=<minio-access-key> \
  -e MINIO_ROOT_PASSWORD=<minio-secret-key> \
  -v minio-test-data:/data \
  --restart unless-stopped \
  minio/minio:latest server /data --console-address ":9001"

端口 18001 提供 MinIO 控制台(Web UI)。

创建默认存储桶

bash
# Install mc (MinIO Client) if not available
docker exec -it slaunchx-minio-test mc alias set local http://localhost:9000 <access-key> <secret-key>
docker exec -it slaunchx-minio-test mc mb local/slaunchx

验证

bash
docker exec -it slaunchx-minio-test mc ls local/
# Expected: [2026-...] slaunchx/

网络绑定策略

服务类型绑定地址原因
中间件(MySQL、Redis 等)127.0.0.1不暴露到局域网——仅通过 Docker 网络可达
应用服务0.0.0.0可从反向代理/负载均衡器访问

slaunchx-intra Docker 网络上的容器通过容器名称互相访问(例如 slaunchx-mysql-test),与宿主机端口映射无关。

部署后检查清单

  • [ ] MySQL 运行中,三个数据库已创建,slaunchx 用户有访问权限
  • [ ] Redis 运行中,已启用密码认证和 AOF 持久化
  • [ ] RabbitMQ 运行中,管理界面可访问
  • [ ] MinIO 运行中,slaunchx 存储桶已创建
  • [ ] 所有容器在 slaunchx-intra 网络上
  • [ ] 所有中间件绑定到 127.0.0.1(非 0.0.0.0

内部手册