2017-10-19 51 views
2

我在製作一個Dockerfile來實現服務器組件。不會運行的Dockerfile

我相信我的文件是完整的,但在實現它時我返回一個錯誤;

/docker-entrypoint.sh: line 22: /opt/author/application/bin/start-ppliance.sh: Permission denied 
/docker-entrypoint.sh: line 22: exec: /opt/author/application/bin/start-appliance.sh: cannot execute: Permission denied 

在Dockerfile本身,我運行以下;

RUN chmod -R 0750 /opt/author/ 
RUN chown -R USER1:USER1 /opt/author/ 

以及;

USER USER1 

在Dockerfile本身最後一行是;

CMD ["/opt/author/application/bin/start-appliance.sh", "run"] 

我不清楚爲什麼會發生此錯誤,因爲文件在容器內,並且由默認用戶擁有。

+0

使用編輯器中的「{}」按鈕(選中一個塊)或四空間縮進來編碼格式化多行塊。 –

+2

你可以發佈整個Dockerfile嗎? – MatTheWhale

+1

對於調試,使用'ls -al/opt/author/application/bin /','echo $(whoami)'添加一對RUN命令可能也有助於確定發生了什麼 –

回答

1

正如你所知道的,這通常發生在你的文件沒有設置執行位的時候,儘管你的chmod 750理論上應該處理這個。一種調試方法,如果這實際上只是在docker run時間(例如docker run -it <image> sh)通過不同的CMD並通過ls -l檢查腳本的權限。多數情況下,沒有執行位設置是罪魁禍首。

如果不是這樣,我會建議使用完整的Dockerfile來澄清問題,以防萬一像VOLUME指令可能會丟棄您正在使用的RUN的效果。

+0

當我輸入container \ w docker運行-u container_name -ti --entrypoint sh回購/容器:ve.rs.io.n並查看其設置了x位的操作文件。 Dockerfile的實現部分如下: – Kyle