从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。