3

I have a following Dockerfile:

FROM ubuntu:18.04

RUN mkdir app && cd app
WORKDIR app/

RUN apt-get update && apt-get install -y \
    software-properties-common \
    curl \
    sudo \
    && curl -O https://hyperledger.github.io/composer/latest/prereqs-ubuntu.sh \
    && chmod u+x prereqs-ubuntu.sh \
    && ./prereqs-ubuntu.sh \
    && npm install -g \ # this line failed
    && yo \
       [email protected] \
       [email protected] \
       generator-hyperledger-com[email protected] \
       [email protected]

    CMD /bin/bash

The prereqs-ubuntu.sh is from https://github.com/hyperledger/composer/blob/master/packages/composer-website/jekylldocs/prereqs-ubuntu.sh.

However, it says /bin/sh: 1: npm: not found on the line npm install -g when I try to build the image. But npm is installed when running prereqs-ubuntu.sh already and can be ran successfully at the end of the file (npm --version).

Also, when I remove the npm-install part from the Dockerfile (shown below) and do docker run --name test -it myimage to see if npm is installed, but it is installed.

FROM ubuntu:18.04

RUN mkdir app && cd app
WORKDIR app/

RUN apt-get update && apt-get install -y \
    software-properties-common \
    curl \
    sudo \
    && curl -O https://hyperledger.github.io/composer/latest/prereqs-ubuntu.sh \
    && chmod u+x prereqs-ubuntu.sh \
    && ./prereqs-ubuntu.sh \

    CMD /bin/bash

1 Answer 1

3

The issue is that prereqs-ubuntu.sh uses bash to install the npm. While the RUN directive uses sh to run the commands.

Where is the npm installed

root@2cd4a6af90f4:/app# type npm
npm is /root/.nvm/versions/node/v8.16.0/bin/npm

The PATH for the RUN directive

# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
1
  • Thanks but how does one fix this? I am on MacOS trying to run my Node app on docker. Aug 2, 2021 at 0:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.