首页 > 解决方案 > 如果容器内工具(如 drush 或typo3cms)不在标准 DDEV PATH 中,如何使它们可用?

问题描述

我有一个非标准的作曲家布局,所以我的一些工具在 docroot/vendor/bin 而不是预期的 vendor/bin 中,所以它们不在网络容器内的 $PATH 中,并且工具喜欢ddev drushddev typo3cms不能正常工作因为他们找不到工具。我能做些什么?

标签: ddev

解决方案


至少有两种方法可以解决这个问题。最简单的可能是将您的工具符号链接到/usr/local/bin容易找到它们的位置。至少有几种方法可以做到这一点。(请注意,对于大多数项目,最好的长期解决方案是使用标准的 composer 布局,其中包含项目根目录中的 composer.json 和项目根目录中的 vendor 目录,但我们都知道我们无法解决所有问题。但是vendor/bin总是在 $PATH.. 所以这是通常最简单的方法。)

  1. 启动后挂钩中的符号链接:我们可以添加启动后挂钩以将typo3cms(例如)符号链接到/usr/local/bin 并ddev typo3cms找到该工具。添加这样的东西.ddev/config.yaml
hooks:
  post-start:
  - exec: ln -s /var/www/html/docroot/vendor/bin/typo3cms /usr/local/bin
  1. 符号链接.ddev/web-build/Dockerfile:要将符号链接添加到 drush,例如,在非标准位置并使其ddev drush正常工作,请将此文件添加为.ddev/web-build/Dockerfile
ARG BASE_IMAGE
FROM $BASE_IMAGE

RUN ln -s /var/www/html/docroot/vendor/bin/drush /usr/local/bin

我确信还有很多其他方法可以做到这一点,通过在容器内操作 $PATH (通过在homeadditions 功能中添加 .bashrc )


推荐阅读