Выполнять команды 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);
});