2014-01-26 63 views
1

我沒有得到我期望的返回代碼,在Docker容器內執行腳本並在其中運行後臺任務。來自後臺命令的Docker返回代碼

這個例子泊塢窗文件突出問題:

FROM ubuntu:latest 
MAINTAINER Jakob H. Thomsen ([email protected]) 

RUN echo "#!/bin/bash\nset -e\n\nls/&\nexit 1" > /start_script.sh 
RUN chmod +x /start_script.sh 

它創建下列文件/start_script.sh容器內:

#!/bin/bash 
set -e 

ls/& 
exit 1 

所以運行docker build -t jakob/test .docker run jakob/test cat /start_script.sh你所期望的返回碼爲1 ,因爲exit 1。它不是,它是0,它以某種方式因爲ls/&(如果您刪除該命令,您將得到預期的返回碼1)。

所以我的問題是爲什麼ls/&覆蓋exit 1命令的返回碼?我試圖讓exit 1在後臺運行,但它不會更改返回代碼...

由於我使用安裝程序來運行Ruby規範,我真的依賴於最後一個的返回代碼命令,那麼我能做些什麼來讓Docker返回最後一條命令的返回碼?

謝謝,我希望你能幫上忙,因爲它讓我花了很長時間來查明這些「錯誤」返回碼的確切問題。

回答

相關問題