从Groovy脚本运行docker命令

我有一些docker命令,我想运行一个Groovy脚本(在Ubuntu环境下工作)

以下命令从terminal正常工作:

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() 

可能是什么原因?

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

代替:

 ['/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() 

使用

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

不要使用-ti ,只需使用-t 。 当使用docker exec来简单地运行一个脚本时,你不能有交互,特别是通过任何CI。