我使用NodeJS和child_process
启动部署脚本。在部署脚本中是对Docker的一些调用。该脚本运行成功,但问题是当脚本通过NodeJS调用时,它表示它无法连接到Docker守护程序。"但是,当我手动调用脚本时,它很好。
相关的NodeJS脚本:
var cp = require('child_process');
cp.exec('deploy.sh', {shell: '/bin/bash', cwd: '/deploy', uid: userid.uid('ubuntu'), gid: userid.gid('ubuntu')}, function(err, stdout, stderr) {
console.log("Output: " + stdout);
});
知道为什么会这样,以及如何修复它?我检查了输出,whoami
返回了正确的用户。
编辑:我尝试在Ruby中运行脚本:
userdata = Etc.getpwnam('ubuntu')
stdout, stderr, status = Open3.capture3("./deploy.sh", :chdir=>"/deploy", :uid => userdata.uid, :gid => userdata.gid)
我得到了相同的结果 - Docker守护程序没有运行。在/var/run/
:
drwx------ 4 root root 80 Jan 20 21:32 docker/
-rw-r--r-- 1 root root 5 Jan 20 22:57 docker.pid
srw-rw---- 1 root docker 0 Jan 20 22:57 docker.sock=
总的来说,这件事让我觉得这是一个权限问题。