Команда RUN в Dockerfile не находит скрипт - PullRequest
0 голосов
/ 13 июня 2018

Используя Docker Toolbox в Windows 10, Docker не может создать образ из моего Dockerfile, поскольку он не находит сценарий (install-composer), который был скопирован в образ.

FROM php:7.2.5-apache

COPY scripts/install-composer /usr/bin
RUN chmod +x /usr/bin/install-composer
RUN /usr/bin/install-composer

Ошибка IПри вводе последней команды RUN get получает:

/bin/sh: 1: /usr/bin/install-composer: not found

Команда chmod работает, однако указывает, что файл действительно существует в образе.

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Очень простая проблема, но очень вводящая в заблуждение ошибка.

Проблема была вызвана неправильным окончанием файла.Git был настроен для преобразования файлов проекта в окончания файлов Windows (CRLF).Я переустановил Git с настройкой «Оформить заказ как есть, зафиксировать в стиле Unix», удалил и откатил репозиторий, и это устранило проблему.

Когда дело доходит до объяснения вводящего в заблуждение и сбивающего с толку сообщения об ошибке, мое предположениеявляется то, что файл install-composer был фактически найден и выполнен.Что на самом деле говорит то, что не было найдено.Это пустое имя было просто CR между двумя LF (другими словами, пустой строкой) и sh интерпретировало его как вызов файла сценария.

0 голосов
/ 13 июня 2018

Попробуйте сгруппировать эти RUN команды:

RUN chmod +x /usr/bin/install-composer && \
    ls -alrth /usr/bin/install* && \
    /usr/bin/install-composer

Таким образом, вы увидите, действительно ли файл скопирован и присутствует.

Вы также можете попробовать, для вашего второгоRUN:

RUN /bin/bash -c "/usr/bin/install"

(при условии, что в вашем скрипте используется bash, а в вашем образе установлен bash)

...