如何在 DDEV Web 容器中添加和使用 nvm?

2023-11-23

目前,DDEV Web 容器不附带 nvm(节点版本管理器)。如何通过 DDEV config.yaml 文件添加和使用它?


在当前的 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"'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 DDEV Web 容器中添加和使用 nvm? 的相关文章

随机推荐

  • 新渲染元素的动画,但页面加载时不动画

    我订阅了 Firebase 实时数据库 这样当我向它提交某些内容时 它会立即在视图中呈现 而不需要 jQuery 或 ajax 我想对这些元素的渲染进行动画处理 这样当一个新元素添加到 DOM 时 它的div s background co
  • Swift 中的十六进制/二进制字符串转换

    Python 有两个非常有用的库方法 binascii a2b hex keyStr 和 binascii hexlify keyBytes 我在 Swift 中一直在努力解决它们 Swift 中有什么现成的东西吗 如果没有 又该如何实施呢
  • React类中的成员变量通过引用“共享”

    当我创建一个反应类的多个实例 通过在同一个类上使用 React createElement 时 一些成员变量在实例之间共享 数组和对象是共享的 字符串和布尔值等不是共享的 对我来说 这感觉可怕 可怕 错误 这是一个错误还是有其他方法可以做我
  • java中如何输入BigInteger类型

    当我尝试获取 Integer 类型的输入时 我只需要做下面的代码 Scanner sc new Scanner System in int N sc nextInt 但当涉及到 BigInteger 时 我不知道该怎么办 我该如何读取用户的
  • 表单不响应 KeyDown 事件

    我已经在 Windows 窗体项目上工作了一段时间 并且决定尝试使用键盘快捷键 经过一番阅读后 我认为我必须编写一个事件处理程序并将其绑定到表单的 KeyDown 事件 private void Form1 KeyDown object s
  • 在 Android 中仅运行一个自定义应用程序,阻止其他任何应用程序运行

    是否有可能让 Android 只能运行一个应用程序 看来制作定制 ROM 可能是一个选择 有人能给我指出正确的方向吗 对此已有许多答案和问题 基本上你有以下选择 创建您自己的 rom 创建您自己的启动器应用程序 最好的解决方案肯定是1 但它
  • Django Rest Framework 每个视图的自定义权限

    我想在 Django Rest Framework 中基于视图 方法 用户权限创建权限 有没有一种方法可以实现这一目标 而无需手动编写每个权限并检查用户所在组的权限 另外 我面临的另一个问题是权限对象与某个模型相关联 由于我有影响不同模型的
  • UIAppearance 删除 UIPopoverController 的自定义导航栏背景

    我正在整合 iOS 5 的 UIAppearance 功能 为我的通用应用程序提供独特的主题 目前 我已经在我的应用程序委托中实现了一些代码来为应用程序提供自定义导航栏 UIImage navBarImage UIImage imageNa
  • Git:所有分支的默认“无提交”合并行为?

    我希望 git merge 默认情况下不提交 即 我希望默认情况下 no commit 行为 无论目标分支如何 我知道特定分支的 git config Branch master mergeoptions 并且我知道默认情况下禁用所有分支上
  • 在 Django 中发送电子邮件的连接超时问题

    我读自 http www packtpub com article friends via email social web application django 1 0 并按照以下步骤操作 gt 并改变我的 设置 py SITE HOST
  • 在anaconda3中安装openCV - Python.h:没有这样的文件或目录

    我正在尝试为我的 anaconda3 安装构建 opencv 3 1 0 但我的构建失败 94 Building CXX object modules python3 CMakeFiles opencv python3 dir src2 c
  • 使用 CLI 清除客户端缓存

    我们正在使用aurelia cli 任务包括 build json build ts process css ts process markup ts process sass ts run json run ts test json te
  • Scrapy PyInstaller OSError:无法获取源代码/twisted.internet.defer._DefGen_Return

    我正在尝试使用 PyInstaller 将一个非常简单的 Scrapy 蜘蛛发布为 EXE 文件 我已经搜索并阅读了我能找到的所有内容 但我仍然无法弄清楚出了什么问题 我怎样才能解决这个问题 如果我将yield更改为return 它不会给我
  • 在 Freemarker 宏中模拟空参数

    我正在使用 Freemarker 构建一个网站 并开始大量使用宏 我知道在 Freemarker 2 3 中 将 null 值作为参数传递到宏中相当于根本不传递参数 因此我创建了一个名为 null 的全局变量来模拟宏中的 null 检查 l
  • C 预处理器将“int x”拆分为 int & x

    我需要能够获得以下内容 define MY MACRO PARAM1 PARAM2 MY OTHER MACRO TYPENAME OF PARAM1 PARAMNAME OF PARAM1 MY OTHER MACRO TYPENAME
  • 集合的伪随机遍历

    我一直在读游戏编码完成 第四版 我在理解第 3 章 有用东西的抓取袋 部分中的 集合的伪随机遍历 路径时遇到了一些问题 您是否想知道 CD 播放机上的 随机 按钮是如何工作的 它会随机播放 CD 上的每首歌曲 而不会播放同一首歌曲两次 这是
  • android tv - 重新加载适配器数据

    我想重新加载浏览片段中的一些行数据 基本上我想重置适配器数据而不在浏览片段中造成类似闪存的效果 知道如何做到吗 就像是notifyDataSetChanged 在列表视图中 Thanx 这将刷新数据而不丢失当前位置 for int i 0
  • 监视 Windows 中进程执行的某些系统调用

    我希望能够监视进程进行的某些系统调用 主要是文件 I O 调用 在Linux上我可能可以使用strace具有合适的参数 但如何在 Windows 上执行此操作 我主要感兴趣的是运行一个进程并找出它已读取和写入的文件 我想从另一个进程以编程方
  • 继承自Set.prototype

    这真的很困扰我 我可以轻松创建一个继承方法的新类Array prototype var MyArray function MyArray prototype Array prototype var myArray new MyArray m
  • 如何在 DDEV Web 容器中添加和使用 nvm?

    目前 DDEV Web 容器不附带 nvm 节点版本管理器 如何通过 DDEV config yaml 文件添加和使用它 在当前的 ddev v1 19 中 默认安装了 nvm 并且可以与ddev nvm 所以您不必执行任何操作 看docs