如何解决在 Dockerfile 上启用 Drupal 8 主题
我正在尝试对 Drupal 8 进行 dockerize。我无法解决的一件事是为新容器提供自定义。例如,我在我的 dockerfile 中下载了 Bootstrap 主题,它显示在 Appearance > Uninstalled themes 下。我可以从管理 UI 安装并将其设置为默认值。 但是,我不希望我的 docker 镜像/容器用户处理这个问题,而是应该在他们运行容器时默认安装它。
有什么办法可以实现吗?
这是我的 Dockerfile:
FROM drupal:8.9.13
RUN cd /opt/drupal/ \
&& composer require drupal/bootstrap:^3.23 \
&& composer install \
&& chown www-data:www-data -R /opt/drupal/web/themes
附言我是 Drupal 工作负载的新手。
解决方法
您可以通过 docker 文件中的 composer 添加 drush:composer require --dev drush/drush
并使用其供应商目录 ./vendor/bin/drush command
调用 drush bin。现在使用以下命令设置默认主题:./vendor/bin/drush config-set system.theme default bootstrap
.
可以做的可选事情还有 ./vendor/bin/drush en bootstrap
和 ./vendor/bin/drush cr
- 如果主题默认主题不会在第一次显示时清除缓存。你必须检查它是否需要。
使用 composer 安装模块与在 Drupal 中安装非常不同。为了在 Drupal 中安装模块,您需要通过工作安装访问数据库。问题是 Dockerfile 中的任何内容都是构建过程的一部分 - 用于创建最终通过 CMD 运行的图像。现在,我不熟悉官方的 Drupal Docker 映像,但我确定它一定是一个简单的基于 PHP 的容器?关键是最后一件事是让 PHP 真正运行,在此之前,MySQL 不会运行。
如何实现你的愿望很大程度上取决于你在Docker构建完成后如何安装Drupal?理想情况下,您使用 ENTRYPOINT 脚本而不是手动执行此操作 - 如果是这样,则在安装后 - 在那里使用 Drush 启用主题。理想情况下,您应该只制作自己的分发配置文件,这将在站点安装时为用户启用主题(并允许您在一个地方进行所有自定义)。
另一方面,如果你正在做的部分是脚本化的——那么你可能只需要添加一个 Drush 别名,这样当命令在 webroot 之外运行时 Drush 能够定位你的安装;参见 https://github.com/drush-ops/drush/blob/master/examples/example.site.yml,但您还没有说明如何安装 Drupal,所以我不能肯定。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。