DDEV环境下Drupal 8主题如何访问容器外的logo.svg文件
问题原因及解决方案
1. 手动执行docker run命令失败的原因
你执行的命令存在两个问题:
- 挂载规则不完整:
-v参数的格式为本地路径:容器内路径,你只写了本地路径加冒号和根目录/,没有指定容器内的目标路径 - 缺少镜像参数:
docker run命令末尾必须指定要启动的容器镜像名称,你没有填写该参数,因此触发参数不足的报错
另外需要注意:手动执行docker run启动的是独立容器,和DDEV管理的web服务容器完全隔离,就算命令执行成功也无法解决DDEV环境下的logo加载问题。
2. DDEV环境下的正确处理方案
正常情况下DDEV默认已经将整个项目根目录挂载到了web容器的/var/www/html路径下,不需要额外配置挂载,建议先优先排查路径问题:
- 将preview.html中的相对路径
./../logo.svg替换为绝对路径/themes/custom/jazzy_theme/logo.svg测试是否可以正常加载 - 如果是twig模板文件,可以使用Drupal的路径变量生成地址:
{{ path('<front>') }}themes/custom/jazzy_theme/logo.svg
如果确认是挂载规则缺失导致的问题,按照DDEV的规范配置自定义挂载即可,不需要手动操作docker命令:
- 在项目根目录的
.ddev文件夹下新建docker-compose.override.yaml文件,写入以下内容:
version: '3.6' services: web: volumes: - "/Users/soren/Sites/drupal/unitynet.dk/web/themes/custom/jazzy_theme/logo.svg:/var/www/html/web/themes/custom/jazzy_theme/logo.svg"
- 执行
ddev restart重启DDEV服务,配置即可生效
3. 验证方法
重启完成后执行ddev ssh进入web容器,进入/var/www/html/web/themes/custom/jazzy_theme/目录,查看是否存在logo.svg文件,存在则代表挂载正常,再访问颜色预览页面验证logo加载状态即可。
内容的提问来源于stack exchange,提问作者Søren Sjøstrøm
相关产品推荐
相关产品推荐

