問題記錄
場景:
? ? ? ? 處于對nacos docker 部署最新版本的探究,但是nacos/nacos-server鏡像拉取不到最新版本,官網也是給出自己構建鏡像的方案。
? ? ? ? 具體步驟很簡單,先clone項目,然后簽出你要的nacos版本,通過docker-compose 部署。
# 克隆項目
git clone https://github.com/nacos-group/nacos-docker.git
cd nacos-docker# 單機模式 mysql 8
docker-compose -f example/standalone-mysql-8.yaml up# 單機模式 Derby
docker-compose -f example/standalone-derby.yaml up
但是,中間也出現了幾個問題,具體如下:
- 拉取nacos最新版的鏡像拉取不到
之前用了好多個國內鏡像加速,正常pull nacos/nacos-server:latest 下來的是老版本,指定版本號的話,加了好幾個國內源才pull成功,最新版本卻拉取不到,猜測還沒推上去。但是不知道哪個倉庫是不是已經有了比較新的nacos版本,這個就不可控。所以,干脆自己構建一個鏡像吧~~
- 鏡像構建報 exec bin/docker-startup.sh: no such file or directory
? ? ? ?這個問題和開發環境有關系,windows 環境可能會遇到,其它沒測試過,看上去錯誤信息是找不到腳本文件,其實是存在的。這個問題本質上是是”找不到腳本的解釋器“,而不是找不到腳本本身。
????????因為系統是windows ,代碼文件從github拉下來,腳本換行符會自動變成Windows的換行符CRLF,然后docker builder的時候,直接把文件docker-startup.sh 復制到容器內部就出問題了。
#!/bin/bash[CRLF]
容器內部是Linux系統,它的換行符是LF,所以無法識別CR,當執行腳本的時候,第一行的解釋器名稱就變成 #!/bin/bashCR了,肯定找不到,就報no such file or directory。
總結:
? ? ? ? 總的來說,本質問題還是換行符的問題,Linux 執行了帶有Windows換行符的腳本。以后在Windows是上開發的腳本,或者中轉的腳本,最好保證換行符還是Unix(LF),這個在很多文本編輯器里是可以指定的,Idea同樣可以轉換。
代碼庫:
GitHub - nacos-group/nacos-docker: This project contains a Docker image meant to facilitate the deployment of Nacos .This project contains a Docker image meant to facilitate the deployment of Nacos . - nacos-group/nacos-dockerhttps://github.com/nacos-group/nacos-docker.git
來源:
Nacos Docker 快速開始 | Nacos 官網容器中sh腳本明明存在,為何會報"no such file or directory"的錯誤? - cs_liwei - 博客園 (cnblogs.com)