Docker 镜像构建报 exec xxx.sh: no such file or directory

问题记录

场景:

        处于对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-dockericon-default.png?t=N7T8https://github.com/nacos-group/nacos-docker.git

来源:

Nacos Docker 快速开始 | Nacos 官网容器中sh脚本明明存在,为何会报"no such file or directory"的错误? - cs_liwei - 博客园 (cnblogs.com)

相关推荐

  1. docker构建镜像命令

    2024-07-15 19:52:01       36 阅读
  2. Docker构建镜像

    2024-07-15 19:52:01       25 阅读
  3. docker】使用 Dockerfile 构建镜像

    2024-07-15 19:52:01       57 阅读
  4. Docker 镜像构建的最佳做法

    2024-07-15 19:52:01       56 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-15 19:52:01       70 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-15 19:52:01       74 阅读
  3. 在Django里面运行非项目文件

    2024-07-15 19:52:01       62 阅读
  4. Python语言-面向对象

    2024-07-15 19:52:01       72 阅读

热门阅读

  1. 力扣刷题之2732.找到矩阵中的好子集

    2024-07-15 19:52:01       22 阅读
  2. golang基础用法

    2024-07-15 19:52:01       19 阅读
  3. shell脚本传参调用http接口

    2024-07-15 19:52:01       18 阅读
  4. JsonCPP源码分析——分配器和配置器

    2024-07-15 19:52:01       16 阅读
  5. Web开发:<div>标签作用

    2024-07-15 19:52:01       21 阅读