Ron Al
Ron Al

Reputation: 476

permission denied in Dockerfile

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

Answers (1)

Ron Al
Ron Al

Reputation: 476

Solved. the solution was in 2 steps:

  1. re-install docker.
  2. changing owner to node, like this:
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

Related Questions