我尝试使用NodeJS docker exec
运行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
框架。
答案 0 :(得分:0)
Docker exec退出。 例如
docker exec -it admin ash -c "ls /"
如果您的流程有点像拖尾日志,那么它只会退出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