Docker`COPY`文件不起作用

ptr*_*ptr 5 docker

我有一个相对简单的 dockerfile

FROM python:3.6.5-alpine

COPY somebinary /usr/local/bin/

COPY install.sh /install.sh
RUN /install.sh
Run Code Online (Sandbox Code Playgroud)

二进制文件被复制得很好(当我运行容器进行检查时),但脚本似乎没有被复制,所以当我尝试运行它时,我得到:

Step 4/5 : COPY install.sh /install.sh
 ---> 38ecc6dbad13
Step 5/5 : RUN /install.sh
 ---> Running in 0b06962d6e1b
/bin/sh: /install.sh: not found
The command '/bin/sh -c /install.sh' returned a non-zero code: 127
Run Code Online (Sandbox Code Playgroud)

我制作的任何其他测试文件也会发生同样的情况,当图像运行时它们不可用。其他人已经成功运行了完全相同的脚本,所以我怀疑这可能与我在 Windows 上通过 Git Bash 运行 docker 的事实有关?可能是权限问题吗?

e:我去尝试通过 powershell 运行并得到同样的错误,所以也许 git bash 是一个红鲱鱼

fly*_*rix 6

您的 install.sh 脚本似乎有 ^M 个字符。
尝试将 install.sh 保存为 unix 格式。dos2unix

使用 notepad++ 或 sublime 或任何其他支持将行尾从 Windows 格式转换为 UNIX 格式的编辑器。