zbyte
zbyte

Reputation: 3815

Dockerhub automated build fails, "not a directory" when adding file

I am trying to use docker hub to automatically build something that builds fine locally. It fails saying:

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

You can view the build itself here: https://hub.docker.com/r/zbyte64/rethinkdb-tlsproxy/builds/bjclhq33kgwxxvn6nbfsgyh/

run.sh is in the same directory as Dockerfile, it seems the build path on dockerhub is different then where it stores the Dockerfile.

I have tried the following variations:

COPY run.sh /bin

ADD ./run.sh /bin

Upvotes: 5

Views: 1592

Answers (3)

candita
candita

Reputation: 47

Or if you want to use ADD, include the trailing slash. ADD ./run.sh /bin/

What is actually happening? From https://docs.docker.com/engine/reference/builder/#add : ADD src dest "If dest does not end with a trailing slash, it will be considered a regular file and the contents of src will be written at dest."

Without the trailing slash on /bin, it expects run.sh to be a directory being copied to directory /bin.

Upvotes: 1

buff
buff

Reputation: 2053

The COPY command (on Dockerhub's Docker version) expects the target file on the right hand side, not just the target directory. The following command should work for you even on Dockerhub.

COPY run.sh /bin/run.sh

Upvotes: 4

zbyte
zbyte

Reputation: 3815

I don't know why, but dockerhub wants the first argument of COPY or ADD to be a directory - not a file. I am running Docker 1.9.1 locally and that is not the case. I switched the Dockerfile to copy a resource directory instead of individual files and things started to work.

Upvotes: 0

Related Questions