【问题标题】:Docker nodejs not found未找到 Docker nodejs
【发布时间】:2016-07-21 22:04:08
【问题描述】:

当我在下面运行docker build -t example . 时出现错误

FROM ruby:2.1
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
ENV NVM_DIR /usr/local/nvm
ENV NODE_VERSION 4.4.2

RUN curl https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash \
  && source $NVM_DIR/nvm.sh \
  && nvm install $NODE_VERSION \
  && nvm alias default $NODE_VERSION \
  && nvm use default


ENV NODE_PATH $NVM_DIR/v$NODE_VERSION/lib/node_modules
ENV PATH      $NVM_DIR/v$NODE_VERSION/bin:$PATH

RUN node -v

我收到以下错误:

步骤 9 : RUN node -v ---> 运行在 6e3fac36d2fc /bin/sh: node: 找不到命令命令'/bin/sh -c node -v'返回非零 代码:127

无法理解为什么在路径中找不到节点。我也尝试执行 nvm.sh 文件,但没有效果。

【问题讨论】:

  • 为什么在容器中使用 nvm?如果您想要在容器中使用不同版本的节点,只需在其中创建具有不同版本的新图像。
  • 是的,你说得对,没有真正的意义只是停留在为什么它不起作用。将其更改为以下作品RUN curl -sL https://deb.nodesource.com/setup_4.x | bash - RUN apt-get install -y nodejs
  • 为了未来的人,我打个答案。

标签: node.js docker


【解决方案1】:

Node 版本管理器是用于在开发机器上切换 Node.js 版本的出色应用程序,但 Docker 需要一种特定类型的映像/容器设计,这种设计旨在既是短暂的,又是精简到最基本的要素,以便支持微服务的“最佳实践”。 Docker 只是运行进程的一种奇特方式,而不是完整的 VM。最后一句话对我思考 Docker 有很大帮助。因此,在这里,您可以通过创建不同版本的图像来让自己更轻松,而不是创建一个容器,其中包含多个版本的 Node.js。这样,您可以在 docker run 命令中引用要运行的 Node 版本,而不是尝试输入环境变量以使 NVM 选择正确的版本。例如:

docker build -t=jamescharlesworth-node:4.x-latest .

当然,您的 Dockerfile 中会包含您在 cmets 中提到的 RUN 指令中的安装命令:

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

【讨论】:

    猜你喜欢
    • 2018-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-20
    相关资源
    最近更新 更多