
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
本镜像专为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 }}
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务