Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从electron vue前端启动docker后端_Javascript_Node.js_Docker_Vue.js_Electron - Fatal编程技术网

Javascript 从electron vue前端启动docker后端

Javascript 从electron vue前端启动docker后端,javascript,node.js,docker,vue.js,electron,Javascript,Node.js,Docker,Vue.js,Electron,我正在构建一个基于electron vue的应用程序。我的electron应用程序应该从docker容器启动其后端运行。为此,我调用一个bash文件,其中包含dockerrun命令 const {spawn} = require('child_process') const dckrrn = spawn('sh', dockercall) dckrrn.stdout.on('data', (data) => { console.log(`stdout:

我正在构建一个基于electron vue的应用程序。我的electron应用程序应该从docker容器启动其后端运行。为此,我调用一个bash文件,其中包含dockerrun命令

    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函数吗?谢谢你的时间

附言: 很抱歉,我不能提供一个可复制的例子,与后端的应用程序总数约为7gb

缴费灵: 一些有趣的旁注:

which docker
不返回任何内容,并且:

pwd
返回:
/

PPP:我尝试在bash脚本的开头包含docker路径,但没有成功:

PATH="/usr/local/bin/docker:${PATH}"
导出路径

4PS: 通过向环境中添加shell:true,我成功地运行了docker。我现在的问题是docker文件夹映射不再有效。所以我想我也必须让他们以某种方式对环境可见

const {spawn} = require('child_process')
const dckrrn = spawn('sh', dockercall, {
  env: {
    shell: true
  }
})
const {spawn} = require('child_process')
const dckrrn = spawn('sh', dockercall, {
  env: {
    shell: true
  }
})

通过将shell:true添加到环境中解决: