Reputation: 476
Trying to build my dockerfile, and getting a permission denied error. The project is a nest.js server. Here is the dockerfile:
FROM node:12.13-alpine
WORKDIR /usr/src/app
COPY package.json .
RUN npm install <<< this fails
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["npm", "run", "start:prod"]
and the error (on npm install) is:
internal/fs/utils.js:220
throw err;
^
Error: EACCES: permission denied, open '/usr/local/lib/node_modules/npm/bin/npm-cli.js'
at Object.openSync (fs.js:440:3)
at Object.readFileSync (fs.js:342:35)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:994:22)
at Module.load (internal/modules/cjs/loader.js:815:32)
at Function.Module._load (internal/modules/cjs/loader.js:727:14)
at Function.Module.runMain (internal/modules/cjs/loader.js:1047:10)
at internal/main/run_main_module.js:17:11 {
errno: -13,
syscall: 'open',
code: 'EACCES',
path: '/usr/local/lib/node_modules/npm/bin/npm-cli.js'
Any idea?
Upvotes: 5
Views: 13349
Reputation: 476
Solved. the solution was in 2 steps:
FROM node:10
RUN mkdir -p /home/node/app && chown -R node:node /home/node/app
WORKDIR /home/node/app
COPY package.json .
USER node
RUN npm install
...
Upvotes: 5