运行 npm install get /bin/sh: 1: npm: 找不到

8
我希望您在一个独立的RUN中运行npm install。
以下是dockerfile。
RUN  curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash \
&& export NVM_DIR="$HOME/.nvm" \
&& [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" \
&& nvm install node && nvm use node \
&& npm cache clean -f && npm install -g n && n stable && npm install cross-env \
&& npm install \
&& npm run dev

在这种情况下,npm install有效。
但是当我将其转换为:
RUN  curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash \
&& export NVM_DIR="$HOME/.nvm" \
&& [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" \
&& nvm install node && nvm use node \
&& npm cache clean -f && npm install -g n && n stable && npm install cross-env

RUN npm install
RUN npm run dev

它说:
/bin/sh: 1: npm: not found

为什么?

3
如果你没有在每个单独的 shell 实例中使用 nvm.sh,那么该 shell 就没有可用的 nvm 函数。每个 RUN 命令都会启动一个新的 shell,因此它不会拥有之前 shell 的局部环境变量和函数。 - Charles Duffy
我不知道每个 RUN 都会打开一个新的终端,请提供更多信息。 - Juliatzin
也许我应该在 && \ 中删除一个 \。"$NVM_DIR/nvm.sh" \ 来源它。 - Juliatzin
1个回答

1

对我有用:https://gist.github.com/remarkablemark/aacf14c29b3f01d6900d13137b21db3a

ENV NODE_VERSION 15.8.0
RUN apt update\
    && curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash\
    && . $HOME/.nvm/nvm.sh\
    && nvm install $NODE_VERSION
ENV NODE_PATH /root/.nvm/v$NODE_VERSION/lib/node_modules
ENV PATH /root/.nvm/versions/node/v$NODE_VERSION/bin:$PATH

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接