1. 程式人生 > 其它 >記一次shell指令碼讀取config.ini檔案進行docker部署出現的換行符問題

記一次shell指令碼讀取config.ini檔案進行docker部署出現的換行符問題

技術標籤:JavaLinuxdockerlinuxshelljava

場景

之前公司一直使用jenkins做持續整合,發現有時候遇到jenkins伺服器維護或公司網路掛了後,都沒法進行打包部署,故又寫了一套指令碼來實現自動化部署。指令碼寫完後的一直可以穩定執行,這次閒下來了準備給指令碼來個升級改造,修改完指令碼後(主要將公共配置檔案放到config.ini),發現指令碼啟動部署後服務起不來,nacos也無法註冊上。

定位分析

  1. 排除伺服器問題,容器網路問題;
  2. 讀取config.ini指令碼問題。

首先排除容器網路問題,因為這個是在進行docker部署中經常遇到的問題,查看了伺服器防火牆(關閉狀態),docker inspect 檢視容器資訊,網路也沒發現啥問題(註冊的同一網路), 容器間網路也是通的。

不是容器網路問題的話,換了臺服務使用相同指令碼重新部署發現還是一樣問題。

繼續定位指令碼問題,之前做過測試是可以讀取到config.ini中的資料的,認為問題應該不大,所以這塊的問題我是放到後面來分析的。
config.ini

[ZNVINFO]
V_DOCKER_HOST=10.72.77.130
V_NACOS_NAMESPACE=29380aa3-0adc-4083-ada4-4553ff611632
V_GANGES_KAFKA=10.72.77.137
V_WEB_VERSION=130
ZNVINFO=$(dirname $0)/config.ini

function __readINI() {
local file=$1;local sec=$2;local key=$3; awk -F "[=]+" '/^\[[\t]*'$sec'[ \t]*\]/{a=1}a==1&&$1~/^[ \t]*'$key'[ \t]*/{gsub(/[\t]+/,"",$2);print $2;exit}' $file return $?; } nacosNamespace=($(__readINI ${ZNVINFO} ZNVINFO V_NACOS_NAMESPACE)) dockerHost=($(__readINI ${ZNVINFO} ZNVINFO V_DOCKER_HOST)
)

通過echo發現獲取到的dockerHost和nacosNamespace都是沒問題的,這就有點懵逼了。

問題解決

仔細檢視docker inspect後發現了點貓膩
在這裡插入圖片描述
怎麼還帶了個換行符,考慮到應該是config.ini檔案格式問題,set ff檢視發現果然格式是dos,set ff=unix修改完格式後重新執行指令碼。發現問題解決了
在這裡插入圖片描述
服務也成功註冊nacos。