2015-07-13 141 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來簡單運行腳本時,您無法進行交互,特別是通過任何配置項。