Sorry-Cypress 项目 Docker Compose 构建配置详解
2025-07-10 06:50:43作者:钟日瑜
概述
本文将深入解析 sorry-cypress 项目的 docker-compose.build.yml 配置文件,帮助开发者理解其架构设计和部署方式。sorry-cypress 是一个开源的 Cypress 测试运行管理平台,通过 Docker Compose 可以快速搭建完整的服务环境。
核心服务架构
该配置文件定义了三个核心服务组件和一个数据库服务,共同构成了 sorry-cypress 的完整运行环境:
- MongoDB 服务:作为数据存储层
- Director 服务:测试执行管理核心
- API 服务:提供 GraphQL 接口
- Dashboard 服务:可视化界面
服务配置详解
1. MongoDB 服务
mongo:
image: mongo:4.4
- 使用官方 MongoDB 4.4 镜像
- 作为整个平台的数据存储后端
- 默认暴露标准 MongoDB 端口(27017)
2. Director 服务
Director 是 sorry-cypress 的核心组件,负责测试执行的管理和调度:
director:
build:
dockerfile: packages/director/Dockerfile
context: .
image: agoldis/sorry-cypress-director:${VERSION:-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'
GITLAB_JOB_RETRIES: 'false'
AWS_ACCESS_KEY_ID: 'key'
AWS_SECRET_ACCESS_KEY: 'secret'
S3_BUCKET: sorry-cypress
PROBE_LOGGER: "false"
ports:
- 1234:1234
depends_on:
- mongo
关键配置说明:
- 构建基于项目内的 Dockerfile
- 使用环境变量配置 MongoDB 连接
- 支持 S3 存储测试截图(需配置 AWS 凭证)
- 暴露 1234 端口供外部访问
- 依赖 MongoDB 服务启动
3. API 服务
API 服务提供 GraphQL 接口供 Dashboard 和其他客户端使用:
api:
build:
dockerfile: packages/api/Dockerfile
context: .
image: agoldis/sorry-cypress-api:${VERSION:-latest}
environment:
MONGODB_URI: 'mongodb://mongo:27017'
MONGODB_DATABASE: 'sorry-cypress'
APOLLO_PLAYGROUND: 'false'
ports:
- 4000:4000
depends_on:
- mongo
关键配置说明:
- 构建基于项目内的 Dockerfile
- 配置 MongoDB 连接
- 禁用 Apollo Playground(生产环境建议)
- 暴露 4000 端口提供 API 服务
- 依赖 MongoDB 服务启动
4. Dashboard 服务
Dashboard 是 sorry-cypress 的 Web 管理界面:
dashboard:
build:
dockerfile: packages/dashboard/Dockerfile
context: .
image: agoldis/sorry-cypress-dashboard:${VERSION:-latest}
environment:
GRAPHQL_SCHEMA_URL: http://localhost:4000
GRAPHQL_CLIENT_CREDENTIALS: ''
PORT: 8080
CI_URL: ''
ports:
- 8080:8080
depends_on:
- api
关键配置说明:
- 构建基于项目内的 Dockerfile
- 配置 GraphQL API 端点(指向 API 服务)
- 设置服务端口为 8080
- 暴露 8080 端口供 Web 访问
- 依赖 API 服务启动
部署建议
-
生产环境调整:
- 应为 MongoDB 配置持久化存储
- 建议使用外部 S3 服务而非本地存储
- 配置适当的 AWS 凭证而非示例中的占位值
- 考虑添加 HTTPS 支持
-
版本控制:
- 通过 VERSION 环境变量控制镜像版本
- 建议在生产环境指定具体版本而非 latest
-
网络配置:
- 可根据需要调整端口映射
- 考虑添加自定义网络提高安全性
总结
通过 docker-compose.build.yml 文件,sorry-cypress 项目提供了一种标准化的部署方式,将复杂的测试管理平台拆分为多个松耦合的服务组件。理解这个配置文件对于定制化部署和故障排查都非常重要。开发者可以根据实际需求调整各项配置参数,构建适合自己测试环境的管理平台。