Выполнять команды Docker через скрипт узла js

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

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

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

3 ответа

Решение

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

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

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

You can use the docker-compose npm instead:https://www.npmjs.com/package/docker-compose

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

Вы можете использовать дочерний процесс для запуска команд Docker с узла 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);
});
Другие вопросы по тегам