Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 可以在docker容器中运行npm/节点,但不能在dockerfile中运行_Node.js_Docker_Npm_Nvm - Fatal编程技术网

Node.js 可以在docker容器中运行npm/节点,但不能在dockerfile中运行

Node.js 可以在docker容器中运行npm/节点,但不能在dockerfile中运行,node.js,docker,npm,nvm,Node.js,Docker,Npm,Nvm,我有dockerfile,其中包含基本映像go,我安装了npm/node: FROM golang:1.7 RUN apt-get update && apt-get install -y wget ###node ENV NVM_DIR /usr/local/nvm ENV NODE_VERSION 6.10.1 RUN wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.3/install.sh

我有dockerfile,其中包含基本映像go,我安装了npm/node:

FROM golang:1.7
RUN apt-get update && apt-get install -y wget

###node
ENV NVM_DIR /usr/local/nvm
ENV NODE_VERSION 6.10.1

RUN wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.3/install.sh | bash \
    && . $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
启动此容器时,我可以在容器内执行
节点
npm
命令:

docker exec -it 763993cc1f7a bash
root@763993cc1f7a:/go# npm -v
3.10.10
但当我向dockerfile添加节点或npm命令时:

RUN npm ...
我得到:
/bin/sh:1:npm:未找到

这怎么可能呢?

您需要避免使用NVM。您可以在代码中使用多级dockerfile来实现这一点。假设Go是主要应用程序,网页包或其他构建活动需要npm

所以最终的docker文件应该如下所示

ARG NODE_VERSION
FROM node:${NODE_VERSION} as static
...
RUN webpack build


FROM go:1.7
COPY --from=static /app/static /app/static
....
CMD ["./goapp"]

此功能是在Docker 17.05 ce中引入的,因此您需要最新版本

这可能是你的问题@yamenk是的!为什么要从Go base创建节点映像?@TarunLalwani,因为我需要在一个映像中同时使用这两个节点。我没有显示Dockerfile的go部分。对于本地开发,我们使用go-contained和节点容器,但his仅在本地为我们工作。在以后的阶段中,我们必须将javascript保存在GOV中,您是否已经查看了多阶段构建?非常易于使用,将我的图像大小减少了150MB