我正在尝试使用Jenkins文件为nodejs应用程序使用node:6-alpine映像(默认)并使用build.sh脚本(使用调用npm install)来运行本地Jenkins Pipeline,然后出现以下权限错误
npm错误!错误:EACCES:权限被拒绝,mkdir'/.npm' npm ERR!错误(本机) npm ERR! {错误:EACCES:权限被拒绝,mkdir'/.npm' npm ERR!错误(本机) npm ERR! errno:-13, npm ERR!代码:“ EACCES”, npm ERR! syscall:“ mkdir”, npm ERR!路径:“ /。npm”, npm ERR!父:“ my-app”} npm ERR! npm ERR!请尝试以root /管理员身份再次运行此命令。
Docker版本18.09.6,内部版本481bc77 Jenkins在本地运行
我尝试了sudo npm install但出现相同的错误。我还尝试将docker image argv修改为-u root:sudo -p 3000:3000同样的错误
Jenkins file image:
pipeline {
agent {
docker {
image 'node:6-alpine'
args '-p 3000:3000'
}
environment {
HOME = '.'
}
}
build.sh脚本 sudo npm install --unsafe-perm = true --allow-root
错误消息:npm ERR!错误:EACCES:权限被拒绝,mkdir'/.npm'
预期结果:创建暴露了端口3000并在localhost:3000上运行nodejs应用的Docker容器
实际结果:容器内部的权限错误。
答案 0 :(得分:0)
在类似的主题中找到答案:npm install fails in jenkins pipeline in docker
就我而言,使用以下方法解决了该问题:
pipeline {
agent {
image 'node:13-alpine'
}
environment {
npm_config_cache = 'npm-cache'
}
stages {
stage('Build') {
steps {
sh 'npm install'
...
}
}
}
}