中间件部署
后端平台需要四个中间件服务。请在部署任何应用服务之前先部署它们。
快速启动(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: PONG3. 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 version4. 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)