DrupalCI Docker镜像是专为Drupal项目设计的持续集成(CI)工具容器化解决方案,基于drupal.org/project/drupalci项目构建。该镜像封装了Drupal项目自动化测试所需的完整环境,支持多种测试类型(单元测试、功能测试、集成测试等),并兼容不同版本的PHP和Drupal核心,旨在简化Drupal模块、主题及核心代码的测试流程,提升开发效率和代码质量。
从Docker Hub拉取***镜像(默认标签为latest,建议指定具体版本以确保稳定性):
bashdocker pull drupalci/drupalci:latest # 或指定版本(如支持Drupal 10的稳定版) docker pull drupalci/drupalci:10.x
docker run)通过docker run命令直接运行测试,需挂载本地Drupal项目目录至容器内,并通过环境变量指定测试参数。
基本语法:
bashdocker run --rm \ -v /本地项目路径:/app \ # 挂载项目代码到容器内/app目录 -e 环境变量=值 \ # 配置测试环境(如PHP版本、测试类型等) drupalci/drupalci \ # 镜像名称 /app/vendor/bin/phpunit # 执行测试命令(或使用内置测试脚本)
docker-compose配置对于复杂测试场景(如依赖数据库、Redis等服务),可通过docker-compose.yml定义完整环境。
示例配置:
yamlversion: '3.8' services: drupalci: image: drupalci/drupalci:10.x volumes: - ./my_drupal_module:/app # 挂载本地模块代码 environment: - PHP_VERSION=8.2 # 指定PHP版本(支持7.4-8.3) - DRUPAL_VERSION=10.1 # 指定Drupal核心版本 - TEST_TYPE=functional # 测试类型:unit/functional/integration - DB_TYPE=mysql # 数据库类型:mysql/pgsql/sqlite - DB_HOST=db # 数据库服务地址(对应下方db服务) - DB_USER=root - DB_PASSWORD=secret - DB_NAME=drupal_test depends_on: - db # 依赖mysql服务启动后再执行测试 db: # 测试依赖的MySQL服务 image: mysql:8.0 environment: - MYSQL_ROOT_PASSWORD=secret - MYSQL_DATABASE=drupal_test ports: - "3306:3306"
启动服务并执行测试:
bashdocker-compose up --build # 构建并启动服务,自动执行测试
| 环境变量 | 作用描述 | 默认值 | 可选值 |
|---|---|---|---|
PHP_VERSION | PHP运行版本 | 8.1 | 7.4, 8.0, 8.1, 8.2, 8.3 |
DRUPAL_VERSION | Drupal核心版本 | 10.0 | 8.9, 9.5, 10.0, 10.1, 10.2 |
TEST_TYPE | 测试类型 | unit | unit, functional, integration, behat |
DB_TYPE | 数据库类型 | sqlite | mysql, pgsql, sqlite |
DB_HOST | 数据库服务地址(非sqlite时必填) | localhost | - |
DB_USER | 数据库用户名 | drupal | - |
DB_PASSWORD | 数据库密码 | drupal | - |
TEST_REPORT_PATH | 测试报告输出路径 | /app/reports | 容器内绝对路径 |
若需执行自定义测试流程(如前置命令、多步骤测试),可在项目根目录创建drupalci-test.sh脚本,并挂载至容器执行:
bash# 本地脚本示例(drupalci-test.sh) #!/bin/bash # 安装依赖 composer install --working-dir=/app # 执行单元测试 /app/vendor/bin/phpunit --configuration /app/phpunit.xml # 执行功能测试 /app/vendor/bin/behat --config /app/behat.yml
通过容器运行自定义脚本:
bashdocker run --rm \ -v $(pwd):/app \ -e PHP_VERSION=8.2 \ drupalci/drupalci \ bash /app/drupalci-test.sh
场景:验证本地模块在PHP 8.2和Drupal 10.1环境下的单元测试。
命令:
bashdocker run --rm \ -v $(pwd)/my_module:/app \ -e PHP_VERSION=8.2 \ -e DRUPAL_VERSION=10.1 \ -e TEST_TYPE=unit \ drupalci/drupalci \ /app/vendor/bin/phpunit --testsuite Unit
docker-compose运行功能测试(依赖MySQL)场景:测试模块在Drupal 10 + MySQL 8.0环境下的功能测试。
docker-compose.yml配置:
yamlversion: '3.8' services: drupalci: image: drupalci/drupalci:10.x volumes: - ./my_module:/app environment: - PHP_VERSION=8.2 - DRUPAL_VERSION=10.1 - TEST_TYPE=functional - DB_TYPE=mysql - DB_HOST=db - DB_USER=root - DB_PASSWORD=secret - DB_NAME=drupal_test depends_on: - db db: image: mysql:8.0 environment: - MYSQL_ROOT_PASSWORD=secret - MYSQL_DATABASE=drupal_test healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] interval: 10s timeout: 5s retries: 5
启动测试:
bash# 构建并启动服务,自动执行功能测试 docker-compose up
10.x),避免latest标签自动更新导致兼容性问题。--memory=2g参数限制。TEST_REPORT_PATH(如/app/reports),需通过卷挂载本地目录获取报告文件。--network=host)或添加DNS解析。-u $(id -u):$(id -g)参数指定容器用户ID。
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429