我正在尝试准备一个docker镜像来加速构建过程,并避免每次构建时都安装各种工具和库,我的基础镜像将包含它,然后我将使用它来安装我需要的所有东西。
所以问题是,我试图从NVM (节点版本管理器)安装节点,但安装后,我不能使用或nvm或npm命令。
我的基本映像是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
我对它做了一点修改,因为我的docker镜像由于shell的不同而无法识别一些命令。
但是当我执行两个单独的RUN时,第二个看不到NVM_DIR。当然,我可以在一个RUN中做所有的事情,但是我需要稍后使用npm,所以每个RUN都应该能够看到这个命令。
此外,我尝试导出NVM_DIR,但即使我用. ~/.bashrc重新启动,它仍然不起作用。
使用NVM的意义在于,我不想关心节点版本。每个构建将是一个LTS版本,这对我来说是可以的。
欢迎分享您的解决方案或建议。提前感谢
发布于 2019-09-27 17:08:51
在不更改镜像和不使用nvm (我不太喜欢)的情况下安装nodejs的方法是
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。
我找不到更好的解决方案,但我希望它能帮助某些人
https://stackoverflow.com/questions/58129002
复制相似问题