title: Dockerfile/npm: create a sudo user to run npm install
body: <p>Creating a <code>Dockerfile</code> to install a node framework that we've created (per my earlier post <a href="https://stackoverflow.com/questions/21873789/docker-installing-a-node-js-application-has-issues-since-docker-runs-as-root/21888825?noredirect=1#21888825">here</a>):</p>
  
  <pre><code># 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
  </code></pre>
  
  <p>The problem is that npm expects to be run not as root -- is there a way to chain a series of <code>sudo useradd</code> commands to create a temp user that has sudo privileges that I can then switch to <code>USER</code> to run the <code>npm install</code>? </p>
  
  <p>EDIT: updated the above, now getting this issue after successfuly creating a user and getting to the <code>npm install</code> line and choking:</p>
  
  <pre><code> Error: Attempt to unlock javascript-brunch@1.7.1, 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:
       &lt;http://github.com/npm/npm/issues&gt;
  </code></pre>