错误:EACCES:权限被拒绝,mkdir'/.npm'

时间:2019-06-13 18:57:17

标签: node.js docker jenkins-pipeline

我正在尝试使用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容器

实际结果:容器内部的权限错误。

1 个答案:

答案 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'
                ...
            }
        }
    }
}