Sorry-Cypress 全栈 Docker 部署方案深度解析
2025-07-10 06:53:17作者:裘旻烁
项目概述
Sorry-Cypress 是一个开源的 Cypress 测试运行管理平台,提供了一套完整的解决方案来替代 Cypress 官方的 Dashboard 服务。通过 Docker Compose 可以快速部署整个系统,包括测试执行管理、结果存储和可视化展示等功能。
核心组件架构
该 Docker Compose 文件定义了四个关键服务组件:
- MongoDB 数据库服务:作为整个平台的数据存储后端
- Director 服务:负责测试执行的管理和调度
- API 服务:提供 GraphQL 接口供前端调用
- Dashboard 服务:可视化界面展示测试结果
详细配置解析
MongoDB 服务配置
mongo:
image: mongo:4.4
volumes:
- ./data/data-mongo-cypress:/data/db
- 使用 MongoDB 4.4 版本镜像
- 通过卷映射将数据持久化到宿主机,确保容器重启后数据不丢失
- 默认暴露 27017 端口供其他服务连接
Director 服务配置
Director 是测试执行的核心调度器,主要配置项包括:
director:
image: agoldis/sorry-cypress-director:latest
environment:
DASHBOARD_URL: http://localhost:8080
MONGODB_URI: 'mongodb://mongo:27017'
MONGODB_DATABASE: 'sorry-cypress'
EXECUTION_DRIVER: '../execution/mongo/driver'
SCREENSHOTS_DRIVER: '../screenshots/s3.driver'
AWS_ACCESS_KEY_ID: 'key'
AWS_SECRET_ACCESS_KEY: 'secret'
S3_BUCKET: sorry-cypress
ports:
- 1234:1234
关键环境变量说明:
DASHBOARD_URL
:Dashboard 服务的访问地址SCREENSHOTS_DRIVER
:配置使用 S3 存储测试截图- AWS 相关配置:用于连接 S3 存储服务(需替换为实际值)
- 暴露 1234 端口用于接收测试结果
API 服务配置
API 服务提供数据访问接口:
api:
image: agoldis/sorry-cypress-api:latest
environment:
MONGODB_URI: 'mongodb://mongo:27017'
MONGODB_DATABASE: 'sorry-cypress'
APOLLO_PLAYGROUND: 'false'
ports:
- 4000:4000
- 使用 GraphQL 实现 API
- 默认禁用 Apollo Playground 界面(生产环境建议)
- 暴露 4000 端口供前端调用
Dashboard 服务配置
可视化界面服务:
dashboard:
image: agoldis/sorry-cypress-dashboard:latest
environment:
GRAPHQL_SCHEMA_URL: http://localhost:4000
PORT: 8080
ports:
- 8080:8080
- 连接 API 服务的 GraphQL 端点
- 使用 8080 端口提供 Web 界面
部署实践建议
- 数据持久化:确保 MongoDB 的卷映射配置正确,避免测试数据丢失
- 安全配置:
- 生产环境应替换默认的 AWS 凭证
- 考虑添加网络隔离和安全组规则
- 性能调优:
- 可根据测试规模调整 MongoDB 的资源限制
- 对于大规模使用,建议将 S3 配置为私有存储桶
- 高可用方案:
- 可考虑将 MongoDB 部署为副本集
- 对关键服务配置健康检查和重启策略
常见问题排查
- 服务启动顺序问题:确保 MongoDB 完全启动后再启动其他服务
- 网络连接问题:检查容器间网络通信是否正常
- 存储权限问题:确保宿主机对数据目录有正确写入权限
- S3 配置问题:验证 AWS 凭证和存储桶权限设置
扩展配置思路
对于进阶用户,可以考虑以下扩展配置:
- 添加 Nginx 反向代理和 HTTPS 支持
- 集成监控系统(如 Prometheus + Grafana)
- 配置日志收集和分析系统
- 实现自动备份方案
通过这套 Docker Compose 配置,用户可以快速搭建完整的 Sorry-Cypress 测试管理平台,为 Cypress 测试提供强大的执行管理和结果分析能力。