Sonic云真机平台容器化部署:Docker Compose与K8s实战指南
Sonic云真机平台容器化部署:Docker Compose与K8s实战指南
Sonic云真机平台是一个革命性的移动设备远程控制调试与自动化测试平台,为全球开发者和测试工程师提供卓越的使用体验。本文将详细介绍如何通过Docker Compose和Kubernetes两种方式快速部署Sonic云真机平台,帮助您构建高效的移动设备测试环境。
🚀 Sonic云真机平台架构概述
Sonic云真机平台采用微服务架构设计,包含以下核心组件:
- sonic-server-eureka: 服务注册与发现中心
- sonic-server-gateway: API网关服务
- sonic-server-controller: 核心控制服务
- sonic-server-folder: 文件管理服务
- sonic-client-web: 前端Web界面
Sonic云真机平台架构
📦 环境准备与前置条件
在开始部署之前,请确保您的系统满足以下要求:
- 操作系统: Linux/Windows/macOS
- Docker: 版本20.10+
- Docker Compose: 版本2.0+
- 内存: 至少4GB RAM
- 磁盘空间: 至少10GB可用空间
- 网络: 稳定的网络连接
🐳 Docker Compose一键部署方案
步骤1:获取项目代码
git clone https://gitcode.com/gh_mirrors/so/sonic-server
cd sonic-server
步骤2:配置环境变量
创建.env文件并配置必要参数:
# 基础配置
SONIC_VERSION=latest
SONIC_SERVER_HOST=localhost
SONIC_SERVER_PORT=3000
# Eureka配置
SONIC_EUREKA_PORT=8761
SONIC_EUREKA_USERNAME=admin
SONIC_EUREKA_PASSWORD=admin123
# MySQL数据库配置
MYSQL_HOST=mysql-host
MYSQL_PORT=3306
MYSQL_DATABASE=sonic
MYSQL_USERNAME=sonic
MYSQL_PASSWORD=sonic123
# JWT安全配置
SECRET_KEY=your-secret-key
EXPIRE_DAY=7
步骤3:启动所有服务
使用Docker Compose启动完整的Sonic云真机平台:
# 使用官方镜像(国际网络)
docker-compose up -d
# 或使用国内镜像加速
docker-compose -f docker-compose-zh.yml up -d
步骤4:验证部署状态
检查所有服务是否正常运行:
docker-compose ps
您应该看到类似以下的输出:
名称 状态 端口
sonic-server-eureka 运行中 8761:8761
sonic-server-gateway 运行中
sonic-server-controller 运行中
sonic-server-folder 运行中
sonic-client-web 运行中 3000:80
步骤5:访问Web界面
打开浏览器访问:http://localhost:3000
☸️ Kubernetes生产级部署方案
部署架构设计
对于生产环境,我们建议使用Kubernetes进行部署,以获得更好的可扩展性和高可用性。
创建Kubernetes配置文件
1. 创建命名空间
# sonic-namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
name: sonic
2. 部署MySQL数据库
# mysql-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: sonic-mysql
namespace: sonic
spec:
replicas: 1
selector:
matchLabels:
app: sonic-mysql
template:
metadata:
labels:
app: sonic-mysql
spec:
containers:
- name: mysql
image: mysql:8.0
env:
- name: MYSQL_ROOT_PASSWORD
value: "root123"
- name: MYSQL_DATABASE
value: "sonic"
- name: MYSQL_USER
value: "sonic"
- name: MYSQL_PASSWORD
value: "sonic123"
ports:
- containerPort: 3306
volumeMounts:
- name: mysql-storage
mountPath: /var/lib/mysql
volumes:
- name: mysql-storage
persistentVolumeClaim:
claimName: mysql-pvc
---
apiVersion: v1
kind: Service
metadata:
name: sonic-mysql
namespace: sonic
spec:
selector:
app: sonic-mysql
ports:
- port: 3306
targetPort: 3306
3. 部署Eureka服务注册中心
# eureka-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: sonic-eureka
namespace: sonic
spec:
replicas: 2
selector:
matchLabels:
app: sonic-eureka
template:
metadata:
labels:
app: sonic-eureka
spec:
containers:
- name: eureka
image: sonicorg/sonic-server-eureka:latest
env:
- name: SONIC_EUREKA_PORT
value: "8761"
- name: SONIC_EUREKA_USERNAME
value: "admin"
- name: SONIC_EUREKA_PASSWORD
value: "admin123"
ports:
- containerPort: 8761
---
apiVersion: v1
kind: Service
metadata:
name: sonic-eureka
namespace: sonic
spec:
selector:
app: sonic-eureka
ports:
- port: 8761
targetPort: 8761
type: ClusterIP
4. 部署其他微服务
按照类似的模式创建Gateway、Controller、Folder和Web服务的Deployment和Service配置。
使用Helm Chart部署(推荐)
# 创建Helm Chart目录结构
mkdir -p sonic-chart/templates
mkdir -p sonic-chart/values
# 编写values.yaml配置文件
cat > sonic-chart/values.yaml << EOF
global:
replicaCount: 2
image:
repository: sonicorg
tag: latest
pullPolicy: IfNotPresent
eureka:
enabled: true
port: 8761
username: admin
password: admin123
gateway:
enabled: true
controller:
enabled: true
mysql:
host: sonic-mysql
port: 3306
database: sonic
username: sonic
password: sonic123
folder:
enabled: true
web:
enabled: true
service:
type: LoadBalancer
port: 3000
EOF
🔧 配置文件详解
核心配置文件位置
Sonic云真机平台的配置文件位于以下位置:
- 应用配置:
sonic-server-common/src/main/resources/application-*.yml - 数据库配置:
sonic-server-common/src/main/resources/application-jdbc.yml - 用户配置:
sonic-server-common/src/main/resources/application-user.yml - 国际化配置:
sonic-server-common/src/main/resources/i18n/
关键配置参数
数据库连接配置
# application-jdbc.yml
spring:
datasource:
url: jdbc:mysql://${MYSQL_HOST}:${MYSQL_PORT}/${MYSQL_DATABASE}
username: ${MYSQL_USERNAME}
password: ${MYSQL_PASSWORD}
driver-class-name: com.mysql.cj.jdbc.Driver
服务发现配置
# application-feign.yml
eureka:
client:
service-url:
defaultZone: http://${SONIC_EUREKA_USERNAME}:${SONIC_EUREKA_PASSWORD}@${SONIC_EUREKA_HOST}:${SONIC_EUREKA_PORT}/eureka/
🛠️ 高级部署技巧
1. 持久化存储配置
确保重要数据持久化存储:
# 创建持久化卷声明
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: sonic-storage
namespace: sonic
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
2. 健康检查配置
为每个服务添加健康检查:
livenessProbe:
httpGet:
path: /actuator/health
port: 8080
initialDelaySeconds: 60
periodSeconds: 10
readinessProbe:
httpGet:
path: /actuator/health
port: 8080
initialDelaySeconds: 30
periodSeconds: 5
3. 资源限制与请求
合理配置资源限制:
resources:
requests:
memory: "512Mi"
cpu: "250m"
limits:
memory: "1Gi"
cpu: "500m"
📊 监控与运维
日志管理
# 查看所有服务日志
docker-compose logs -f
# 查看特定服务日志
docker-compose logs -f sonic-server-controller
# Kubernetes环境日志查看
kubectl logs -n sonic deployment/sonic-controller
性能监控
集成Prometheus和Grafana进行监控:
# prometheus配置示例
scrape_configs:
- job_name: 'sonic-services'
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels: [__meta_kubernetes_pod_label_app]
regex: sonic-.*
action: keep
🔍 故障排除指南
常见问题及解决方案
-
服务无法启动
- 检查Docker版本是否满足要求
- 验证
.env文件配置是否正确 - 查看容器日志:
docker logs <container_id>
-
数据库连接失败
- 确认MySQL服务正常运行
- 检查数据库用户名密码是否正确
- 验证网络连接:
telnet mysql-host 3306
-
服务注册失败
- 检查Eureka服务状态
- 验证服务发现配置
- 查看网络策略是否允许服务间通信
-
Web界面无法访问
- 确认端口映射是否正确
- 检查防火墙设置
- 验证服务依赖关系
🎯 最佳实践建议
开发环境部署
- 使用Docker Compose快速搭建
- 启用热重载功能
- 配置本地调试环境
测试环境部署
- 使用Kubernetes单节点集群
- 配置自动化测试流水线
- 集成CI/CD工具
生产环境部署
- 使用高可用Kubernetes集群
- 配置自动扩缩容策略
- 实施完善的监控告警
- 定期备份重要数据
📈 扩展与优化
水平扩展策略
# 根据负载自动扩展
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: sonic-controller-hpa
namespace: sonic
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: sonic-controller
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
网络优化配置
# 配置网络策略
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: sonic-network-policy
namespace: sonic
spec:
podSelector:
matchLabels:
app: sonic
policyTypes:
- Ingress
- Egress
ingress:
- from:
- podSelector:
matchLabels:
app: sonic
ports:
- protocol: TCP
port: 8080
🏁 总结
Sonic云真机平台通过容器化部署方案,为移动设备测试提供了灵活、可扩展的解决方案。无论是使用简单的Docker Compose进行快速部署,还是采用Kubernetes进行生产级集群管理,都能满足不同规模团队的需求。
通过本文介绍的部署方法和最佳实践,您可以快速搭建一个稳定、高效的移动设备自动化测试平台,显著提升开发和测试效率。随着业务的增长,您可以轻松扩展平台规模,满足更多设备并发测试的需求。
立即开始您的Sonic云真机平台部署之旅,体验高效的移动设备自动化测试! 🚀
更多推荐
所有评论(0)