
drupalci/php-8.2-apacheDrupalCI 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。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务