Я создаю приложение на основе электронов.Предполагается, что мое электронное приложение запускает свой бэкэнд из док-контейнера.Для этого я вызываю файл bash с командой docker run.
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.
По какой-то причине порожденный дочерний процесс не знает об установке докера в системе.Что я делаю неправильно?Как правильно достичь этого?Должен ли я попробовать функцию execfile?Спасибо за ваше время!
PS: Извините, что я не могу предоставить вам воспроизводимый пример, общее приложение с бэкэндом составляет около 7 ГБ.
PPS: некоторые интересные признаки:
which docker
ничего не возвращает, а:
pwd
возвращает: /
PPPS: я попытался включить путь к докеру в начале моего сценария bash, но безуспешно:
PATH="/usr/local/bin/docker:${PATH}"
экспорт PATH
4PS: мне удалось запустить докер, добавив в среду shell: true.У меня сейчас проблема в том, что сопоставления папок докера больше не работают.Так что, я думаю, мне также нужно как-то сделать их видимыми для env.
const {spawn} = require('child_process')
const dckrrn = spawn('sh', dockercall, {
env: {
shell: true
}
})