【问题标题】:Docker node installationDocker节点安装
【发布时间】:2019-09-27 17:08:51
【问题描述】:

我正在尝试准备一个 docker 映像以加快构建过程并避免在每次构建时安装各种工具和库,我的基础映像将包含它,然后我会将它与我需要的所有已安装的东西一起使用。

所以问题是我正在尝试从 NVM(节点版本管理器)安装节点,但安装后我无法使用 nvmnpm 命令。

我的基础镜像是 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 版本,这对我来说没问题。

欢迎分享您的解决方案或建议。提前致谢

【问题讨论】:

  • 您需要nvm 还是直接安装node 的解决方案对您有帮助?为什么不使用go-apline 图像
  • 由于nvm install --lts | nvm use --ltsnvm 对我来说更好。我使用其他命令安装了 node 和 npm,但它不太方便,因为必须提供版本。越自动化越好。
  • 如果是 Docker,你不需要节点版本管理器 (NVM) 来管理版本,每个 docker 映像代表一个版本,那么为什么还要在 Docker 中安装NVM 呢?使用golang:1.13.1-alpine3.10 然后只需安装节点apk add --no-cache node 或指定您想要的任何版本。这也安装lts
  • @Adiii 我使用 golang 图像提供的 apt-get 安装的更多东西。但是使用alpine我只有apk,所以我不方便重写所有下载的东西

标签: node.js docker npm


【解决方案1】:

使用 npm 安装 nodejs 而不更改图像和不使用 nvm(我不太喜欢)的方法是

RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - \
    && apt-get install -y nodejs

RUN npm -vRUN node -v 之后,它与nvm 的LTS 版本相同,即6.9.0 和10.16.3。

我找不到更好的解决方案,但我希望它可以帮助某人

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-19
    • 1970-01-01
    • 2016-09-13
    • 2019-02-14
    • 1970-01-01
    • 2011-08-29
    相关资源
    最近更新 更多