I have a Dockerfile that works fine:
FROM node:10
RUN npm set unsafe-perm true
RUN npm install -g '@oresoftware/[email protected]'
but the same CircleCI config.yml file that mirrors the above Dockerfile does not work:
{
"version": 2,
"jobs": {
"build": {
"docker": [
{
"image": "circleci/node:10"
}
],
"steps": [
{
"run": "npm set unsafe-perm true"
},
{
"run": "npm install -g --loglevel=warn '@oresoftware/[email protected]'"
}
]
}
}
}
I get the following error on CircleCI using the above config.yml file:
#!/bin/bash -eo pipefail
npm install -g --loglevel=warn @oresoftware/r2g
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules
npm ERR! path /usr/local/lib/node_modules
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall access
npm ERR! Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
npm ERR! { [Error: EACCES: permission denied, access '/usr/local/lib/node_modules']
npm ERR! stack:
npm ERR! 'Error: EACCES: permission denied, access \'/usr/local/lib/node_modules\'',
npm ERR! errno: -13,
npm ERR! code: 'EACCES',
npm ERR! syscall: 'access',
npm ERR! path: '/usr/local/lib/node_modules' }
npm ERR!
npm ERR! The operation was rejected by your operating system.
npm ERR! It is likely you do not have the permissions to access this file as the current user
npm ERR!
npm ERR! If you believe this might be a permissions issue, please double-check the
npm ERR! permissions of the file and its containing directories, or try running
npm ERR! the command again as root/Administrator (though this is not recommended).
npm ERR! A complete log of this run can be found in:
npm ERR! /home/circleci/.npm/_logs/2018-06-18T18_26_53_651Z-debug.log
Exited with code 243
CircleCI 2.0 should use Docker, so I am not sure why this permissions error is happening.
sudo
for this, but if I do usesudo
, that also fails on CircleCI with a different permissions error. – Develop"steps"
are part of the"build"
, right? – DevelopRUN npm
steps as it builds, then CircleCI will try to do what's understeps
separately on the Docker image - basically the same steps which have already been run when the image was built. – FogyRUN
steps from the Dockerfile OR drop the twosteps
from the CircleCI config. As I said, I'm just a beginner with this myself. I just feel like your duplicating and that's where you're getting the permissions conflict. – Fogyprefix
config setting and adjust the$PATH
. There's more detail in this article – Steeplebushnode:10
, and on circlecircleci/node:10
is used. The difference is that the circleci node image drops to thecircleci
user and thus loses root privileges. This is described in the circleci/node docker hub page (point 4 under the heading "Why"). So an equivalent node-based image would look like this. And this dockerfile yields the same result as circle. – Steeplebush