解決docker CMD/ENTRYPOINT執(zhí)行sh腳本報(bào): not found/run.sh:
Dockerfile配置沒有問題,為什么執(zhí)行ENTRYPOINT命令時(shí)一直錯(cuò)誤?
容器一啟動(dòng)就退出了。
查了不少資料,想了好久才發(fā)現(xiàn)原因。

run.sh是被COPY指令復(fù)制到容器中的,而本機(jī)是windows,默認(rèn)的換行符是n,故而復(fù)制過去無(wú)法被執(zhí)行。
解決辦法很簡(jiǎn)單,切換文件格式為L(zhǎng)F即可。

補(bǔ)充知識(shí):docker中啟動(dòng)容器時(shí)CMD調(diào)用的sh腳本中if命令報(bào)未預(yù)期的符號(hào) if[[的解決辦法
最近通過Dockerfile編寫鏡像,CMD中調(diào)用的是sh腳本(start.sh)進(jìn)行啟動(dòng)容器,通過docker run啟動(dòng)時(shí),啟動(dòng)不成功,進(jìn)行docker logs 容器ID,發(fā)現(xiàn)報(bào)錯(cuò)為:未預(yù)期的符號(hào) if [[
我直接在外部linux系統(tǒng)調(diào)用執(zhí)行start.sh是成功的,通過docker exec 進(jìn)入容器,在容中調(diào)用start.sh也未報(bào)錯(cuò),命令中需要啟動(dòng)的程序都成功啟動(dòng)。
腳本直接執(zhí)行沒問題,通過docker run卻報(bào)錯(cuò),百思不得其解。
start.sh中報(bào)錯(cuò)代碼段如下
if [[ -e /home/dc/testnn-aaa.zip ]];then rm -rf /home/testnn-aaa unzip -q -o -d /home testnn-aaa.zip echo 'unzip zip finished' else echo 'dc zip not exist'fi
經(jīng)過查閱比較,因?yàn)槲业膕tart.sh在報(bào)錯(cuò)語(yǔ)句之前也有if語(yǔ)句,但是沒報(bào)錯(cuò),發(fā)現(xiàn)兩處區(qū)別為第一處if使用的是單[],將代碼改為[],則成功,修改如下:
if [ -e /home/dc/testnn-aaa.zip ];then
以上這篇解決docker CMD/ENTRYPOINT執(zhí)行sh腳本報(bào): not found/run.sh:就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. .net中string類型可以作為lock的鎖對(duì)象嗎2. 詳細(xì)總結(jié)Java for循環(huán)的那些坑3. Java進(jìn)行Appium自動(dòng)化測(cè)試的實(shí)現(xiàn)4. python 使用Tensorflow訓(xùn)練BP神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)鳶尾花分類5. 新手學(xué)python應(yīng)該下哪個(gè)版本6. php中PHPUnit框架實(shí)例用法7. uni-app結(jié)合PHP實(shí)現(xiàn)單用戶登陸demo及解析8. ajax實(shí)現(xiàn)頁(yè)面的局部加載9. 如何利用Python matplotlib繪制雷達(dá)圖10. PHP安全-過濾輸入

網(wǎng)公網(wǎng)安備