在当前的 ddev v1.19+ 中,默认安装了 nvm,并且可以与ddev nvm
,所以您不必执行任何操作。看docs. So do ddev nvm install 12
例如。如果您想将其烘焙到 config.yaml 中,您可能需要添加如下内容:
hooks:
post-start:
- exec: nvm install 12
- exec: cd somepath && npm install
----原答案如下------
我建议使用 .ddev/web-build/Dockerfile 方法,因为每次执行操作时都不会花费您的费用ddev start
;它只在每个项目中构建一次(以及当您升级 ddev 时)。
将此文件放入 .ddev/web-build/Dockerfile 中:
ARG BASE_IMAGE
FROM $BASE_IMAGE
ENV NVM_DIR=/usr/local/nvm
ENV NODE_DEFAULT_VERSION=v6.10.1
RUN curl -sL https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh -o install_nvm.sh
RUN mkdir -p $NVM_DIR && bash install_nvm.sh
RUN echo "source $NVM_DIR/nvm.sh" >>/etc/profile
RUN bash -ic "nvm install $NODE_DEFAULT_VERSION && nvm use $NODE_DEFAULT_VERSION"
RUN chmod -R ugo+w $NVM_DIR
将 NODE_DEFAULT_VERSION 更改为您想要的内容。您可以添加到此以使用 nvm 的所有功能;您可以安装多个版本,然后使用nvm use <otherversion>
如果你愿意的话,可以在启动后的钩子中。
有关如何使用和安装 nvm 的更多信息,请参阅README.
有关如何使用 ddev 的附加 Dockerfile 功能的更多信息,请参阅关于附加 Dockerfile 的 ddev 文档
有关 Dockerfile 语法的详细信息,请参阅Docker 的 Dockerfile 参考
nvm 实际上是 shell 别名,因此默认情况下它在容器中不可用于非交互式命令。所以里面工作得很好ddev ssh
但在启动后挂钩中不能开箱即用。要在启动后挂钩中使用它,您可以执行以下操作:
hooks:
post-start:
- exec: 'bash -l -c "nvm install v12.15.0 && nvm use v12.15.0"'