Сбой автоматической сборки Dockerhub, а не каталог при добавлении файла

Я пытаюсь использовать концентратор докеров для автоматической сборки чего-то, что отлично строится локально. Не получается сказать:

Build process failed: stat /var/lib/docker/aufs/mnt/1be9db483fa6f3de2596b5261e7c450de8df503185e579278396f14ba179c257/bin/run.sh: not a directory

Саму сборку можно посмотреть здесь: https://hub.docker.com/r/zbyte64/rethinkdb-tlsproxy/builds/bjclhq33kgwxxvn6nbfsgyh/

run.sh находится в том же каталоге, что и Dockerfile, кажется, путь сборки на dockerhub отличается от того, где он хранит Dockerfile.

Я пробовал следующие варианты:

COPY run.sh /bin

ADD ./run.sh /bin


person zbyte    schedule 29.01.2016    source источник
comment
Также пробовал ADD /run.sh /bin безуспешно   -  person zbyte    schedule 29.01.2016


Ответы (3)


Команда COPY (в версии Docker от Dockerhub) ожидает целевой файл с правой стороны, а не только целевой каталог. Следующая команда должна работать для вас даже на Dockerhub.

COPY run.sh /bin/run.sh
person buff    schedule 11.02.2016

Или, если вы хотите использовать ADD, добавьте косую черту в конце. ADD ./run.sh /bin/

Что происходит на самом деле? Из https://docs.docker.com/engine/reference/builder/#add : ADD src dest «Если dest не заканчивается косой чертой, он будет считаться обычным файлом, и содержимое src будет записано в dest».

Без косой черты в конце /bin предполагается, что run.sh будет каталогом, копируемым в каталог /bin.

person candita    schedule 03.03.2016

Я не знаю почему, но dockerhub хочет, чтобы первым аргументом COPY или ADD был каталог, а не файл. Я запускаю Docker 1.9.1 локально, но это не так. Я переключил Dockerfile на копирование каталога ресурсов вместо отдельных файлов, и все заработало.

person zbyte    schedule 29.01.2016