首页 > 解决方案 > /bin/bash: npm: 找不到命令(docker 容器)

问题描述

我已经用nvm构建了一个 docker 映像:

FROM ubuntu:19.10

RUN rm /bin/sh && ln -s /bin/bash /bin/sh

RUN apt-get update && \
    apt-get -y dist-upgrade && \
    apt-get -y autoremove && \
    apt-get clean all


RUN apt-get install -y \
    git \
    curl \
    bash-completion

ARG NODE_VERSION='12.0.0'
ARG NVM_DIR=/root
ARG NVM_VERSION='v0.35.3'

RUN curl -o- "https://raw.githubusercontent.com/nvm-sh/nvm/$NVM_VERSION/install.sh" | bash \
    && source $NVM_DIR/nvm.sh \
    && nvm install $NODE_VERSION

ENV TERM=xterm

现在我正在尝试测试我是否可以启动一个容器并运行npm

docker run my-npm-image /bin/bash -c  "npm --version"

但这给出了:

/bin/bash: npm: command not found

如果我改为:

docker run -it my-npm-image /bin/bash
root@laptop:/# npm --version
6.9.0

有用。所以安装在映像中,但如果不先进入容器npm,我就无法运行它。

注意使用上述方法运行其他命令可以正常工作:

docker run my-npm-image /bin/bash -c  "git --version"
git version 2.20.1

在上面的 dockerfile中npm安装有什么想法吗?nvm

标签: dockernpmnvm

解决方案


PATH不知道npm位置,因为如果我PATH明确设置,它对我有用。

$ docker run --rm my-npm-image /bin/bash -c "PATH=/root/versions/node/v12.0.0/bin;$PATH npm --version"
6.9.0

要设置npm路径,请尝试将以下内容添加到 Dockerfile:

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

ENV TERM=xterm

参考:https ://gist.github.com/remarkablemark/aacf14c29b3f01d6900d13137b21db3a


推荐阅读