Выполнять команды Docker через скрипт узла js - PullRequest
0 голосов
/ 18 мая 2018

Есть ли лучший способ выполнить команды docker от узла js, кроме использования shelljs (аналогичные пакеты) для выполнения этих команд?

Я видел докерод пакета.Хотя это отлично подходит для некоторых команд, он не дает большого представления о команде 'docker exec'.

Мне просто нужно больше контроля при выполнении docker exec из nodejs, который не может обеспечить shelljs.Я хочу знать, когда команда docker exec была выполнена, была ли она выполнена успешно или нет.

Ответы [ 3 ]

0 голосов
/ 22 мая 2018

Если вы хотите запустить команду из сценария nodejs, используйте shelljs или дочерний процесс, чтобы запустить команду и перенаправить вывод ее в файл журнала или текстовый файл.И использовать функцию что-то вроде this saerch для строки ошибки в файле.

Что в основном происходит, когда вы выполняете docker exec в рамках cli, даже если возникает ошибка, которая незахваченный shelljs.Таким образом, код выхода будет 0 в любом случае.Таким образом, это вызывает разницу в отлове ошибок в обычной команде оболочки и команде docker exec.

Мы могли бы использовать пакет dockerode npm.Мы можем использовать этот конкретный пример и записать его в соответствии с нашим вариантом использования.Я просто изменил код прослушивания событий «data» и «end» в потоке, который возвратил.

0 голосов
/ 22 мая 2018

Вы можете использовать дочерний процесс для запуска команд докера с узла js.Например

var sys = require('sys')
var exec = require('child_process').exec;

function puts(error, stdout, stderr) { sys.puts(stdout) }
exec("ls -la", function(err, stdout, stderr) {
  console.log(stdout);
});
0 голосов
/ 18 мая 2018

Вы можете использовать child_process для команд exec bash и получать результаты, чтобы увидеть успех или нет.

...