Creating a Dockerfile
to install a node framework that we've created (per my earlier post here):
# Install dependencies and nodejs
RUN apt-get update
RUN apt-get install -y python-software-properties python g++ make
RUN add-apt-repository ppa:chris-lea/node.js
RUN apt-get update
RUN apt-get install -y nodejs
# Install git
RUN apt-get install -y git
# Bundle app source
ADD . /src
# Create a nonroot user, and switch to it
RUN /usr/sbin/useradd --create-home --home-dir /usr/local/nonroot --shell /bin/bash nonroot
RUN /usr/sbin/adduser nonroot sudo
RUN chown -R nonroot /usr/local/
RUN chown -R nonroot /usr/lib/
RUN chown -R nonroot /usr/bin/
RUN chown -R nonroot /src
USER nonroot
# Install app source
RUN cd /src; npm install
The problem is that npm expects to be run not as root -- is there a way to chain a series of sudo useradd
commands to create a temp user that has sudo privileges that I can then switch to USER
to run the npm install
?
EDIT: updated the above, now getting this issue after successfuly creating a user and getting to the npm install
line and choking:
Error: Attempt to unlock [email protected], which hasn't been locked
at unlock (/usr/lib/node_modules/npm/lib/cache.js:1304:11)
at cb (/usr/lib/node_modules/npm/lib/cache.js:646:5)
at /usr/lib/node_modules/npm/lib/cache.js:655:20
at /usr/lib/node_modules/npm/lib/cache.js:1282:20
at afterMkdir (/usr/lib/node_modules/npm/lib/cache.js:1013:14)
at /usr/lib/node_modules/npm/node_modules/mkdirp/index.js:37:53
at Object.oncomplete (fs.js:107:15)
If you need help, you may report this *entire* log,
including the npm and node versions, at:
<http://github.com/npm/npm/issues>
The "Attempt to unlock" issue is often caused by not having the environment variable HOME
set properly. npm
needs this to be set to a directory that it can edit (it sets up and manages an .npm
directory there).
You can specify environment variables in your docker run
call with e. g. docker run -e "HOME=/home/docker"
.
To solve your "Attempt to unlock" issue, try cleaning the npm cache first by issuing
npm cache clean
After that, run
npm install
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With