node.js - Docker节点安装
问题描述
我正在尝试准备一个 docker 映像以加快构建过程并避免在每次构建时安装各种工具和库,我的基本映像将包含它,然后我会将它与我需要的所有已安装的东西一起使用。
所以问题是我正在尝试从 NVM(节点版本管理器)安装节点,但安装后我无法使用 nor nvm
nornpm
命令。
我的基础镜像是 golang:1.13.1,我做了以下事情。
RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash
然后在教程中,我看到~/.nvm/nvm.sh
必须运行才能完成下面的工作
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
我对其进行了一些更改,因为由于 shell 不同,我的 docker 映像无法识别少数命令。
但是当我做两个分开RUN
时,第二个就看不到NVM_DIR
了。当然,我可以做所有事情,RUN
但我需要npm
稍后再做,所以每个人都RUN
应该能够看到这个命令。
另外,我尝试导出NVM_DIR
,但即使我重新启动它仍然无法正常工作. ~/.bashrc
。
拥有 NVM 的重点是我不想关心节点版本。每个版本都是 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。
我找不到更好的解决方案,但我希望它可以帮助某人
推荐阅读
- sql-server - 使用 SSIS 包将记录从单个 Excel 工作表插入到多个表中
- javascript - 有没有办法在 Google 表单上设置默认选项?
- flutter - 使用旧版本构建 Flutter appbundle
- r - 在 R 中加入数据帧时覆盖列
- flutter - 实现回调/侦听器模式的正确方法是什么?
- c# - 将字符串 ID 转换为唯一的 Guid(或从 md5 转换为 Guid)?
- javascript - Ajax POST 数据未出现在模式中
- html - typer.js 是否允许 ascii 字符?
- python - Django:AttributeError:类型对象'Position'没有属性'_meta'
- python - 涉及字符串连接的 Python 列表理解中嵌套的 for 循环细分