Я пытаюсь запустить команду сборки docker для настройки контейнера. Когда я запускаю его, нужный мне файл не может быть найден. Я получаю эту ошибку
/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 новый (этот новый файл тоже не найден)
сброс учетных данных докера
Мой текущий скрипт:
...
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 заканчивается.