在Dockerfile中创build一个新用户,并且无法安装npm deps

这是我的Dockerfile

 FROM node:7.10.0 RUN useradd --user-group --create-home --shell /bin/false app RUN mkdir -p /usr/src/hello ENV HOME=/usr/src/ COPY package.json $HOME/hello/ RUN chown -R app:app $HOME/* RUN npm install -g pm2 USER app WORKDIR $HOME/hello RUN npm install EXPOSE 8080 CMD ["npm", "start"] 

它用于从docker-compose构build我的应用程序

 version: '2' services: hello: build: ./hello command: "pm2-docker server.js" ports: - 8080:8080 volumes: - ./hello:/usr/src/hello 

当我尝试运行docker-compose up ,出现以下错误:

 npm ERR! Error: EACCES: permission denied, mkdir '/usr/src/.npm/hapi' npm ERR! { Error: EACCES: permission denied, mkdir '/usr/src/.npm/hapi' npm ERR! errno: -13, npm ERR! code: 'EACCES', npm ERR! syscall: 'mkdir', npm ERR! path: '/usr/src/.npm/hapi', npm ERR! parent: 'hello' } npm ERR! npm ERR! Please try running this command again as root/Administrator. 

为什么以用户app运行npm install会出现以下错误?

你肯定有权限错误的文件夹上的所有权…我最好的猜测是RUN chown -R app:app $HOME/*应该是RUN chown -R app:app $HOME

没有/*在那里。 chown-R选项已经处理了所有的子文件夹。