
geerlingguy/drupal该项目由三个主要部分组成:
geerlingguy/drupal Docker镜像,可从Docker Hub拉取。geerlingguy.docker。(该Ansible角色是管理Docker容器的主要组件。)当前维护的版本包括:
latestlatest-arm64latest-arm32v7使用此Docker镜像最简单的方法是将项目中包含的docker-compose.yml文件放在Drupal站点的根目录,根据需要自定义后运行:
bashdocker-compose up -d
之后可通过http://localhost/访问Drupal站点,首次安装时会显示Drupal安装界面。按照指引操作即可完成全新Drupal站点的搭建!
默认情况下,若未将Drupal代码库挂载到/var/www/html路径,镜像会将Drupal下载到该目录。如需覆盖此行为(例如,将代码库共享到/var/www/html/web或其他路径),可设置环境变量DRUPAL_DOWNLOAD_IF_NOT_PRESENT=false。
要将Drupal代码库放入容器,可通过Dockerfile的COPY命令,或挂载卷(例如在开发环境中使用镜像时)。包含的docker-compose.yml文件假设Drupal代码库位于./web路径,可自定义卷挂载指向Drupal文档根目录。
若未在容器的/var/www/html路径提供Drupal代码库,容器的docker-entrypoint.sh脚本会下载Drupal(使用DRUPAL_DOWNLOAD_VERSION)。默认使用Drupal的最新开发版本,可通过设置DRUPAL_DOWNLOAD_VERSION指定特定版本(例如8.5.3)。
settings.php中的设置最佳实践是不在代码库中包含数据库凭证等敏感信息,因此此Docker容器建议通过运行时环境变量传入连接详情,可在Drupal站点的settings.php文件中通过getenv()获取。
例如,配置数据库连接时,传入DRUPAL_DATABASE_NAME等设置:
php$databases['default']['default'] = [ 'driver' => 'mysql', 'database' => getenv('DRUPAL_DATABASE_NAME'), 'username' => getenv('DRUPAL_DATABASE_USERNAME'), 'password' => getenv('DRUPAL_DATABASE_PASSWORD'), 'host' => getenv('DRUPAL_DATABASE_HOST'), 'port' => getenv('DRUPAL_DATABASE_PORT'), ];
还可设置DRUPAL_HASH_SALT环境变量以配置$settings['hash_salt']。
默认Apache文档根为/var/www/html。若代码库需要使用其他文档根(例如Composer构建的Drupal项目使用/var/www/html/web),可设置环境变量APACHE_DOCUMENT_ROOT指定相应目录,容器启动时会自动修改文档根。

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务