除了使用 shelljs(类似的包)来执行这些命令之外,还有没有更好的方法从节点 js 执行 docker 命令?
我看过 dockerode 包。虽然它对某些命令很有用,但它并没有提供太多关于 'docker exec' 命令的视图。
在从 nodejs 执行 shelljs 无法提供的 docker exec 时,我只需要更多控制。我想知道 docker exec 命令执行后是否成功执行。
除了使用 shelljs(类似的包)来执行这些命令之外,还有没有更好的方法从节点 js 执行 docker 命令?
我看过 dockerode 包。虽然它对某些命令很有用,但它并没有提供太多关于 'docker exec' 命令的视图。
在从 nodejs 执行 shelljs 无法提供的 docker exec 时,我只需要更多控制。我想知道 docker exec 命令执行后是否成功执行。
如果您想从 nodejs 脚本运行命令,请使用 shelljs 或子进程运行命令并将输出重定向到日志或 txt 文件中。文件中的错误字符串的使用函数类似于这个saerch。
基本上发生的是当您在 cli 中执行 docker exec 时,即使发生了 shelljs 未捕获的错误。因此,无论哪种方式,退出代码都将为 0。所以这会导致在普通 shell 命令和 docker exec 命令中捕获错误的差异。
我们可以使用 dockerode npm 包。我们可以使用这个特定的示例并根据我们的用例编写它。我只是将代码更改为在返回的流上监听事件“数据”和“结束”。
您可以将child_process用于 exec bash 命令并获取结果以查看成功与否。
您可以改用 docker-compose npm: https ://www.npmjs.com/package/docker-compose
您可以使用子进程从节点 js 运行 docker 命令。例如
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);
});