/ bin / sh: 1: /go/src/test.sh: не найдено - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь создать этот dockerfile, файл успешно скопирован, но я получаю следующую ошибку:

docker build --no-cache=true -f Dockerfile-Gobase .

Отправка сборки контекст для демона Docker 34MB

Шаг 1/3: ОТ ГОЛАНГА: 1.11.2 ---> df6ac9d1bf64

Шаг 2/3: COPY ./test.sh / go / src / ---> 38a538f0289d

Шаг 3/3: ЗАПУСК (ls -l / go / src / && cd / go / src / && /go/src/test.sh) ---> Работает в 089de53d11f0

всего 4

-rwxr-xr-x 1 корневой корень 34 января 24 03:22 test.sh

/ bin / sh: 1: /go/src/test.sh: не найдено

Команда '/ bin / sh -c (ls -l / go / src / && cd / go / src / && /go/src/test.sh) 'вернул ненулевой код: 127

Это коды файлов

Dockerfile-Gobase

FROM golang:1.11.2
COPY ./test.sh /go/src/
RUN (ls -l /go/src/ && cd /go/src/ && /go/src/test.sh)

test.sh

#!/bin/sh
echo "hello world"

1 Ответ

0 голосов
/ 25 января 2019

Вы устранили первую причину, проверив, что сценарий существует в контейнере с ls.Это также устранило права доступа к файлам Linux.

Следующая возможная причина - ваш интерпретатор не находится в контейнере, а показывает скрипт, который мы видим, что он #!/bin/sh/bin/sh входит в ваш базовый образ.

Что я могу вспомнить, это переходы на строки Windows в файле, где-то отсутствующая библиотека или, возможно, инструменты безопасности, такие как SE Linux / AppArmor со строгой конфигурацией.,В этом случае, похоже, что перевод строки в Windows был причиной.Вам просто нужно настроить редактор для вывода с переводами в стиле Linux.В противном случае Linux ищет /bin/sh\R для запуска (где \R - возврат каретки), и эта команда не существует.

Это включено в мой DockerCon 18 talk , который включаетмножество других советов, которые вы можете найти полезными при запуске.

...