通过节点 js 脚本执行 docker 命令

Execute docker commands through a node js script

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

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

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

可以用child_process执行exec bash命令,得到结果看成功与否。

如果你想要 运行 来自 nodejs 脚本的命令,使用 shelljs 或子进程到 运行 命令并将输出重定向到日志或 txt 文件.并且使用函数类似于 this saerch for error string in the file.

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

我们可以使用 dockerode npm 包。我们可以使用这个特定的 example 并根据我们的用例编写它。我只是更改了代码以监听返回的流上的事件 'data' 和 'end'。

您可以为来自节点 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);
});

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