
本镜像专为Drupal的贡献模块/主题设计,旨在简化模块/主题的测试流程。与其他集成Docker到完整Drupal项目的镜像不同,本镜像专注于为贡献模块/主题提供容器化环境,帮助开发者避免手动搭建完整Drupal环境的繁琐步骤,支持手动或自动化测试。
| 标签和Dockerfile | Drupal版本 |
|---|---|
11.3 https://github.com/wengerk/docker-drupal-for-contrib/tree/master/11/11.3/Dockerfile | 11.3-dev |
11.2 https://github.com/wengerk/docker-drupal-for-contrib/tree/master/11/11.2/Dockerfile | 11.2.x |
11.1 https://github.com/wengerk/docker-drupal-for-contrib/tree/master/11/11.1/Dockerfile | 11.1.x |
11.0 https://github.com/wengerk/docker-drupal-for-contrib/tree/master/11/11.0/Dockerfile | 11.0.x |
10.6 https://github.com/wengerk/docker-drupal-for-contrib/tree/master/10/10.6/Dockerfile | 10.6-dev |
10.5 https://github.com/wengerk/docker-drupal-for-contrib/tree/master/10/10.5/Dockerfile | 10.5.x |
10.4 https://github.com/wengerk/docker-drupal-for-contrib/tree/master/10/10.4/Dockerfile | 10.4.x |
10.3 https://github.com/wengerk/docker-drupal-for-contrib/tree/master/10/10.3/Dockerfile | 10.3.x |
10.2 https://github.com/wengerk/docker-drupal-for-contrib/tree/master/10/10.2/Dockerfile | 10.2.x |
10.1 https://github.com/wengerk/docker-drupal-for-contrib/tree/master/10/10.1/Dockerfile | 10.1.x |
10.0 https://github.com/wengerk/docker-drupal-for-contrib/tree/master/10/10.0/Dockerfile | 10.0.x |
9.5 https://github.com/wengerk/docker-drupal-for-contrib/tree/master/9/9.5/Dockerfile | 9.5.x |
Docker Hub上已有许多Drupal镜像,它们的共同目标是将Docker集成到完整的Drupal项目中。
本镜像则截然不同:我们不解决Docker与Drupal的集成问题,而是提供为贡献模块/主题设置Docker的解决方案。
许多开发者在创建出色模块时,需要手动搭建完整的Drupal 8/9环境并将自定义模块/主题 symlink 到其中,测试过程繁琐。本Docker镜像通过提供容器化的Drupal 8/9/10/11环境,高度简化这一流程,用于模块/主题贡献项目的手动或自动化测试。
1. 创建Dockerfile
在仓库根目录创建Dockerfile:
dockerfileARG BASE_IMAGE_TAG=10.4 FROM wengerk/drupal-for-contrib:${BASE_IMAGE_TAG}
2. 创建docker-compose.yml
在仓库根目录创建docker-compose.yml:
yamlservices: drupal: build: . depends_on: - db ports: - 8888:80 volumes: # 将模块挂载到正确的贡献模块目录 - .:/var/www/html/modules/contrib/my_module restart: always db: image: mariadb:10.6 environment: MYSQL_USER: drupal MYSQL_PASSWORD: drupal MYSQL_DATABASE: drupal MYSQL_ROOT_PASSWORD: root restart: always
注意:更新挂载的volume名称以匹配你的自定义模块名称。
3. 运行Docker
shell$ docker-compose build --pull --build-arg BASE_IMAGE_TAG=10.4 drupal $ docker-compose up -d drupal # 等待Docker就绪,尤其是MariaDB需要几秒启动时间 $ docker-compose exec -u www-data drupal drush site-install standard --db-url="mysql://drupal:drupal@db/drupal" --site-name=Example -y
4. 运行PHPUnit测试
shelldocker-compose exec -u www-data drupal phpunit --no-coverage --group=my_module --configuration=/var/www/html/phpunit.xml
1. 创建.travis.yml
在仓库根目录创建.travis.yml:
yamllanguage: php services: - docker env: global: # 要在Docker中挂载和测试的模块名称 - MODULE_NAME="my_module" jobs: include: - name: D8.9 env: BASE_IMAGE_TAG="8.9" - name: D9.0 env: BASE_IMAGE_TAG="9.0" - name: D10.0 env: BASE_IMAGE_TAG="10.0" - name: D11.0 env: BASE_IMAGE_TAG="11.0" before_install: - docker-compose build --pull --build-arg BASE_IMAGE_TAG=${BASE_IMAGE_TAG} drupal - docker-compose up -d drupal # 等待Docker就绪,尤其是MariaDB需要几秒启动 - docker-compose exec drupal wait-for-it drupal:80 -t 60 - docker-compose exec drupal wait-for-it db:3306 -t 60 before_script: - docker-compose exec -u www-data drupal drush site-install standard --db-url="mysql://drupal:drupal@db/drupal" --site-name=Example -y script: - docker-compose exec -u www-data drupal phpunit --no-coverage --group=${MODULE_NAME} --configuration=/opt/drupal/web/phpunit.xml
yamlname: Continuous integration on: [push] jobs: tests: name: Tests runs-on: ubuntu-latest strategy: matrix: drupal_version: ['8.9', '9.0', '9.1', '10.0', '10.1', '10.2', '11.0'] module: ['my_module'] experimental: [ false ] include: - drupal_version: '10.3' module: 'my_module' experimental: true - drupal_version: '11.1' module: 'my_module' experimental: true steps: - uses: actions/checkout@v3 - run: docker-compose -f docker-compose.yml pull --include-deps drupal - name: 构建docker-compose堆栈 run: docker-compose -f docker-compose.yml build --pull --build-arg BASE_IMAGE_TAG=${{ matrix.drupal_version }} drupal continue-on-error: ${{ matrix.experimental }} - name: 运行单元测试 run: docker-compose -f docker-compose.yml run -u www-data drupal phpunit --no-coverage --group=${{ matrix.module }} --configuration=/var/www/html/phpunit.xml continue-on-error: ${{ matrix.experimental }}
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。




探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务