2015-07-13 145 views
0

运行泊坞窗命令我有一些码头工人的命令,我想用Groovy脚本(Ubuntu的环境下工作)从Groovy脚本

以下命令从终端正常运行它们:

docker exec -it my_docker bash -c '/opt/someFolder/someScript.sh' 

然而,没有发生的时候我从Groovy脚本运行此命令:

['/bin/sh', '-c', "docker exec -it my_docker bash -c '/opt/someFolder/someScript.sh'"].execute().text.trim() 

可能是什么原因?

+0

是否有可能你的过程写入stderr而不是stdout? – Vlad

回答

1

它可能会在标准输出上产生太多的数据,所以缓冲区变满,进程阻塞。

相反的:

['/bin/sh', '-c', "docker exec -it my_docker bash -c '/opt/someFolder/someScript.sh'"].execute().text.trim() 

务必:

def stdout = new StringWriter() 
def stderr = new StringWriter() 
['/bin/sh', '-c', "docker exec -it my_docker bash -c '/opt/someFolder/someScript.sh'"].execute().waitForProcessOutput(stdout, stderr) 

println "OUTPUT: " + stdout.toString() 
println "ERRORS: " + stderr.toString() 
+0

感谢您的评论。我试着运行你的代码,并得到以下消息:错误:无法在非tty输入启用tty模式。任何想法为什么? – Omri

+0

http://stackoverflow.com/questions/29380344/docker-exec-it-command-returns-following-error-cannot-enable-tty-mode-on-non-t? –

0

使用

docker exec -t my_docker bash -c '/opt/someFolder/someScript.sh' 

不要使用-ti,只需使用-t。使用docker exec来简单运行脚本时,您无法进行交互,特别是通过任何配置项。