代码之家  ›  专栏  ›  技术社区  ›  DenCowboy

可以在docker容器中运行npm/node,但不能在dockerfile中运行

  •  2
  • DenCowboy  · 技术社区  · 7 年前

    我有一个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
    

    node npm 容器内的命令:

    docker exec -it 763993cc1f7a bash
    root@763993cc1f7a:/go# npm -v
    3.10.10
    

    但是,当我向dockerfile添加节点或npm命令时:

    RUN npm ...
    

    我得到: /bin/sh: 1: npm: not found 这怎么可能?

    1 回复  |  直到 7 年前
        1
  •  3
  •   Tarun Lalwani    7 年前

    所以最终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中引入了此功能,因此您需要最新版本。