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

时间:2018-05-18 10:55:34

标签: node.js docker docker-exec

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

我见过包dockerode。虽然它对某些命令很有用,但它并没有给出很多关于“docker exec”的观点。命令。

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

4 个答案:

答案 0 :(得分:1)

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

基本上发生的是当你在cli中执行docker exec时,即使发生了shelljs没有捕获的错误。所以退出代码将为0。因此,这会导致正常shell命令和docker exec命令中捕获错误的差异。

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

答案 1 :(得分:0)

您可以使用child_process作为exec bash命令,并获取结果以查看是否成功。

答案 2 :(得分: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);
});

答案 3 :(得分:0)

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