我正在尝试准备一个 docker 镜像来加速构建过程,并避免每次构建时安装各种工具和库,我的基础镜像将包含它,然后我将它与我需要的所有已安装的东西一起使用。
所以问题是我正在尝试从 NVM( Node 版本管理器)安装 Node ,但安装后我无法使用 nvm
或 npm
命令。
我的基础镜像是 golang:1.13.1,我做了以下事情。
运行curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash
然后在教程中,我看到必须运行 ~/.nvm/nvm.sh
才能完成如下工作
导出 NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh"] &&\. "$NVM_DIR/nvm.sh"# 这会加载 nvm
我对其进行了一些更改,因为由于 shell 不同,我的 docker 镜像无法识别一些命令。
但是当我执行两个单独的 RUN
时,第二个就不再看到 NVM_DIR
了。当然,我可以在一次 RUN
中完成所有操作,但稍后我需要使用 npm
,因此每个 RUN
都应该能够看到此命令.
此外,我尝试导出 NVM_DIR
,但即使使用 重新启动,它仍然无法工作。 ~/.bashrc
.
拥有 NVM 的目的是我不想关心 Node 版本。每个版本都将是 LTS 版本,这对我来说没问题。
欢迎分享您的解决方案或建议。提前致谢
最佳答案
使用npm安装nodejs而不更改图像且不使用nvm(我不太喜欢)的方法是
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - \
&& apt-get install -y nodejs
在 RUN npm -v
和 RUN node -v
之后,它与 nvm 的 LTS 版本相同,即 6.9.0 和 10.16.3。
我找不到更好的解决方案,但我希望它可以帮助别人
关于node.js - Docker Node 安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58129002/