在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
选项已经处理了所有的子文件夹。