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

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

補(bǔ)充知識:docker中啟動容器時CMD調(diào)用的sh腳本中if命令報未預(yù)期的符號 if[[的解決辦法
最近通過Dockerfile編寫鏡像,CMD中調(diào)用的是sh腳本(start.sh)進(jìn)行啟動容器,通過docker run啟動時,啟動不成功,進(jìn)行docker logs 容器ID,發(fā)現(xiàn)報錯為:未預(yù)期的符號 if [[
我直接在外部linux系統(tǒng)調(diào)用執(zhí)行start.sh是成功的,通過docker exec 進(jìn)入容器,在容中調(diào)用start.sh也未報錯,命令中需要啟動的程序都成功啟動。
腳本直接執(zhí)行沒問題,通過docker run卻報錯,百思不得其解。
start.sh中報錯代碼段如下
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)過查閱比較,因為我的start.sh在報錯語句之前也有if語句,但是沒報錯,發(fā)現(xiàn)兩處區(qū)別為第一處if使用的是單[],將代碼改為[],則成功,修改如下:
if [ -e /home/dc/testnn-aaa.zip ];then
以上這篇解決docker CMD/ENTRYPOINT執(zhí)行sh腳本報: not found/run.sh:就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 基于android studio的layout的xml文件的創(chuàng)建方式2. 什么是python的自省3. 編程語言PHP在Web開發(fā)領(lǐng)域的優(yōu)勢在哪?4. 詳解Android studio 動態(tài)fragment的用法5. Android如何加載Base64編碼格式圖片6. 解決Android studio xml界面無法預(yù)覽問題7. .Net Core使用Coravel實現(xiàn)任務(wù)調(diào)度的完整步驟8. Vuex localStorage的具體使用9. 圖文詳解vue中proto文件的函數(shù)調(diào)用10. 阿里云服務(wù)器下安裝LAMP環(huán)境——基于CentOS 6.3

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