Sonic云真机平台容器化部署:Docker Compose与K8s实战指南

【免费下载链接】sonic-server 🎉Back end of Sonic cloud real machine platform. Sonic云真机平台后端服务。 【免费下载链接】sonic-server 项目地址: https://gitcode.com/gh_mirrors/so/sonic-server

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

🔍 故障排除指南

常见问题及解决方案

  1. 服务无法启动

    • 检查Docker版本是否满足要求
    • 验证.env文件配置是否正确
    • 查看容器日志:docker logs <container_id>
  2. 数据库连接失败

    • 确认MySQL服务正常运行
    • 检查数据库用户名密码是否正确
    • 验证网络连接:telnet mysql-host 3306
  3. 服务注册失败

    • 检查Eureka服务状态
    • 验证服务发现配置
    • 查看网络策略是否允许服务间通信
  4. 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云真机平台部署之旅,体验高效的移动设备自动化测试! 🚀

【免费下载链接】sonic-server 🎉Back end of Sonic cloud real machine platform. Sonic云真机平台后端服务。 【免费下载链接】sonic-server 项目地址: https://gitcode.com/gh_mirrors/so/sonic-server

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐