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] \ [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. Commented Aug 2, 2021 at 0:13

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.