【问题标题】:Why docker image build throws /usr/bin/env: ‘sh\r’: No such file or directory?为什么 docker image build 会抛出 /usr/bin/env: ‘sh\r’: No such file or directory?
【发布时间】:2020-07-15 03:15:21
【问题描述】:

构建 docker 镜像....... /usr/bin/env: ‘sh\r’: 没有这样的文件或目录 执行失败

完整的脚本

#!/bin/bash
 echo "Building docker image......."
. gradle.properties
 IMAGE="$dockerRegistry/$1"
 IMAGE_TAG="$releaseVersion-$(git log -1 --pretty=%h)"
 if ./gradlew clean :$1:jibDockerBuild -x test; then
 echo "Pushing docker image...."
 docker tag $IMAGE $IMAGE:$IMAGE_TAG
 docker push $IMAGE:$IMAGE_TAG
 else
 echo "execution failed"
 exit 1
  fi
 exit 0

【问题讨论】:

  • 你也可以在这里发布你的 Dockerfile 吗?
  • $'\r' 是回车。您的代码可能保存为 DOS/Windows 文本文件,而不是 UNIX 文件。 DOS 文本文件使用CRLF 序列($'\r\n')分隔行,而 UNIX 文本文件 end 行(包括最后一行)仅使用换行符($'\n')。
  • 查看stackoverflow.com/tags/bash/info的“在询问有问题的代码之前”部分中的第一个条目
  • 也就是说,这是一个不同的程序抛出了你的错误,而不是这个。此代码未使用env sh。也许是您的gradlew 副本以这种方式检查?无论哪种方式,无论是哪个程序,错误都如上所述。
  • 在脚本顶部添加打印命令 set -x 以缩小脚本完全失败的命令范围。

标签: docker gradlew


【解决方案1】:

尝试为 gradlew 文件调整文件结尾:

   dos2unix .\gradlew

【讨论】:

  • 不应该是:dos2unix ./gradlew?
  • 也许反斜杠是关于 Windows 的。你可以根据你的操作系统试一试。
猜你喜欢
  • 2014-01-20
  • 2021-03-28
  • 2021-11-16
  • 2013-08-12
  • 2015-07-28
  • 2014-12-02
  • 2015-10-07
  • 2022-08-15
  • 2022-12-17
相关资源
最近更新 更多