我正在建立一个基于电子vue的应用程序。我的电子应用程序应该从docker容器开始其后端运行。为此,我调用了一个包含docker run命令的bash文件。
const {spawn} = require('child_process')
const dckrrn = spawn('sh', dockercall)
dckrrn.stdout.on('data', (data) => {
console.log(`stdout: ${data}`)
})
dckrrn.stderr.on('data', (data) => {
console.log(`stderr: ${data}`)
})
dckrrn.on('close', (code) => {
console.log(`child process exited with code ${code}`)
})在开发模式下一切正常,但当我在打包的应用程序中尝试它时,它会抱怨:
stderr: pathtobashscript.sh line 13 docker: command not found.由于某些原因,派生的子进程似乎不知道系统上是否安装了docker。我做错了什么?实现这一目标的正确方法是什么?我应该尝试execfile函数吗?耽误您时间,实在对不起!
PS:很抱歉,我不能给你提供一个可重复的例子,后端的应用程序总数约为7 7gb。
PPS:一些有趣的小插曲:
which docker不返回任何内容,并且:
pwd返回:/
PPPS:我尝试在bash脚本的开头包含docker路径,但没有成功:
PATH="/usr/local/bin/docker:${PATH}"导出路径
4PS:通过向环境添加shell: true,我设法让docker运行起来。我现在遇到的问题是docker文件夹映射不再有效。因此,我想我还必须以某种方式使它们对env可见。
const {spawn} = require('child_process')
const dckrrn = spawn('sh', dockercall, {
env: {
shell: true
}
})发布于 2018-06-14 18:22:34
通过将shell: true添加到env来解决:
const {spawn} = require('child_process')
const dckrrn = spawn('sh', dockercall, {
env: {
shell: true
}
})https://stackoverflow.com/questions/50825566
复制相似问题