gpt4 book ai didi

node.js - 调用 docker exec 时 NodeJS Spawn 不退出

转载 作者:太空宇宙 更新时间:2023-11-04 01:51:44 32 4
gpt4 key购买 nike

我正在尝试运行 docker exec使用 NodeJS 的命令 childProcess.spawn但该过程永远不会“退出”。我尝试过诸如 pty.js 之类的库但这些也从不发出“退出”。

我添加了-t到命令,虽然这确实将输出更改为具有全彩色支持,但它仍然不会触发“退出”事件。

我的完整命令: docker exec -it frontend-container gulp build

这是我正在运行的代码。 this.terminal.spawn只需调用 spawn关于pty.js图书馆。

const cProcess = this.terminal.spawn(cmd, matches);

cProcess.on('data', (data) => {
console.log('data', data);
});

cProcess.on('exit', (data) => {
console.log('Exit');
});

data事件被完美调用,但是 exit从未被调用过。这是使用 pty.js框架。

最佳答案

当命令中启动的进程存在时,Docker exec 退出。例如

docker exec -it admin ash -c "ls /"

enter image description here

如果您的进程类似于拖尾日志,那么它只会退出 ctrl+c

例如

docker exec -it admin ash -c "pm2 logs"

在我们的 CI 测试中,我们只是调用

docker exec -t nodejs ash -c "cd /opt/nodejs/ ; npm test"

现在,当从 npm test 命令退出触发器时,exec 将退出。这就是我们在 Nodejs 中的处理方式

 var gulp = require('gulp');
var mocha = require("gulp-mocha");

gulp.task("buildTests", function () {
return gulp.src([
"./test/build/test*.js"
]).pipe(mocha({exit: true}));
});

检查这些链接

https://github.com/gulpjs/gulp/issues/411

exit gulp when build is finished

https://github.com/gulpjs/gulp/issues/903

http://derrickbowen.com/blog/content/stop-gulp-build-unit-test-failure https://www.npmjs.com/package/docker-exec

https://www.npmjs.com/package/docker-cli-js

关于node.js - 调用 docker exec 时 NodeJS Spawn 不退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49383694/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com