从 electron-vue 前端启动 docker 后端
Posted
技术标签:
【中文标题】从 electron-vue 前端启动 docker 后端【英文标题】:starting docker backend from electron-vue frontend 【发布时间】:2018-11-22 08:19:54 【问题描述】:我正在构建一个基于电子 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: 抱歉,我无法为您提供可重现的示例,带有后端的应用程序总大小约为 7gb。
PPS: 一些有趣的旁注:
which docker
什么都不返回,并且:
pwd
返回:/
PPPS:我尝试在 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
)
【问题讨论】:
【参考方案1】:通过添加 shell: true 到 env 解决:
const spawn = require('child_process')
const dckrrn = spawn('sh', dockercall,
env:
shell: true
)
【讨论】:
以上是关于从 electron-vue 前端启动 docker 后端的主要内容,如果未能解决你的问题,请参考以下文章
electron-vue 项目启动动态获取配置文件中的后端服务地址
electron-vue架构解析3-开发环境启动流程分析(原)
electron-vue架构解析3-开发环境启动流程分析(原)
electron-vue项目中开发环境中的axios跨域问题