我正在尝试运行docker build命令来设置容器。当我运行它时,找不到我需要的文件。我收到此错误
/bin/sh: 1: ./downloadScript: not found
The command '/bin/sh -c ./downloadScript' returned a non-zero code: 127
我在脚本运行之前运行了ls -la
,它出现了。
drwxr-xr-x 1 root root 4096 Apr 30 18:05 .
drwxr-xr-x 1 root root 4096 Apr 30 18:05 ..
-rwxr-xr-x 1 root root 714 Apr 29 18:20 downloadScript
drwxr-xr-x 4 root root 4096 Apr 30 18:05 gradleProject
我尝试了几件事
chmod 777的文件和目录
cp文件,chmod为新文件(也无法找到该新文件)
重置docker凭据
我当前的脚本:
...
WORKDIR /dir1
RUN ls -la # For manual verification
RUN ./downloadScript
...
Docker输出
Sending build context to Docker daemon 120.3kB
Step 1/17 : FROM openjdk:8-slim as builder
---> e2581abdea18
Step 2/17 : WORKDIR /dir1
---> Using cache
---> 4ef289b22b45
Step 3/17 : ADD WCE_Docker/res /dir1
---> Using cache
---> 3d757ec6caba
Step 4/17 : ADD /GradleProject/ /dir1/gradleProject/
---> Using cache
---> 7e46cc77290d
Step 5/17 : WORKDIR /dir1
---> Using cache
---> fe7570221d31
Step 6/17 : RUN ls -la
---> Using cache
---> 019ef7d640da
Step 7/17 : RUN ./downloadScript
---> Running in 9870fd1e3af3
/bin/sh: 1: ./downloadScript: not found
The command '/bin/sh -c ./downloadScript' returned a non-zero code: 127
它可以在Mac和Ubuntu上正常运行,但不能在Windows 10上运行。
更新
我手动设置了容器,并尝试运行脚本,并收到了稍微不同的错误。
root@835516a24a7f:/dir# ./downloadScript
bash: ./downloadScript: /bin/bash^M: bad interpreter: No such file or directory
我发现这是基于DOS的行尾。我将修复该问题,然后发布结果。
更新结果
运行dos2unix downloadScript
,它可以正常运行。问题是DOS行结束。