8

除了使用 shelljs(类似的包)来执行这些命令之外,还有没有更好的方法从节点 js 执行 docker 命令?

我看过 dockerode 包。虽然它对某些命令很有用,但它并没有提供太多关于 'docker exec' 命令的视图。

在从 nodejs 执行 shelljs 无法提供的 docker exec 时,我只需要更多控制。我想知道 docker exec 命令执行后是否成功执行。

4

4 回答 4

3

如果您想从 nodejs 脚本运行命令,请使用 shelljs 或子进程运行命令并将输出重定向到日志或 txt 文件中。文件中的错误字符串的使用函数类似于这个saerch。

基本上发生的是当您在 cli 中执行 docker exec 时,即使发生了 shelljs 未捕获的错误。因此,无论哪种方式,退出代码都将为 0。所以这会导致在普通 shell 命令和 docker exec 命令中捕获错误的差异。

我们可以使用 dockerode npm 包。我们可以使用这个特定的示例并根据我们的用例编写它。我只是将代码更改为在返回的流上监听事件“数据”和“结束”。

于 2018-05-22T06:11:08.807 回答
1

您可以将child_process用于 exec bash 命令并获取结果以查看成功与否。

于 2018-05-18T14:29:11.540 回答
1

您可以改用 docker-compose npm: https ://www.npmjs.com/package/docker-compose

于 2020-09-01T04:32:33.683 回答
0

您可以使用子进程从节点 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);
});
于 2018-05-22T11:48:55.147 回答