стартовый докерский бэкэнд от электронно-графического интерфейса - PullRequest
0 голосов
/ 12 июня 2018

Я создаю приложение на основе электронов.Предполагается, что мое электронное приложение запускает свой бэкэнд из док-контейнера.Для этого я вызываю файл 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
  }
})

1 Ответ

0 голосов
/ 14 июня 2018

решено добавлением shell: true в env:

const {spawn} = require('child_process')
const dckrrn = spawn('sh', dockercall, {
  env: {
    shell: true
  }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...