I have read however I met a problem. I want to copy the local directory go to docker /user/local/

I tried:

ADD go /usr/local/ 

and:

ADD /go/ /usr/local/ 

also:

RUN chmod 0755 /usr/local/go/src/make.bash 

However, I see the following error message:

/usr/local/go/src/make.bash: No such file or directory 

but the local go directory does contain make.bash.

5 Answers

ADD go /usr/local/ 

will copy the contents of your local go directory in the /usr/local/ directory of your docker image.

To copy the go directory itself in /usr/local/ use:

ADD go /usr/local/go 

or

COPY go /usr/local/go 
12

Indeed ADD go /usr/local/ will add content of go folder and not the folder itself, you can use Thomasleveil solution or if that did not work for some reason you can change WORKDIR to /usr/local/ then add your directory to it like:

WORKDIR /usr/local/ COPY go go/ 

or

WORKDIR /usr/local/go COPY go ./ 

But if you want to add multiple folders, it will be annoying to add them like that, the only solution for now as I see it from my current issue is using COPY . . and exclude all unwanted directories and files in .dockerignore, let's say I got folders and files:

- src - tmp - dist - assets - go - justforfun - node_modules - scripts - .dockerignore - Dockerfile - headache.lock - package.json 

and I want to add src assets package.json justforfun go so:

in Dockerfile:

FROM galaxy:latest WORKDIR /usr/local/ COPY . . 

in .dockerignore file:

node_modules headache.lock tmp dist 

In this way, you ignore node_modules headache.lock tmp dist so they will not be added!

Or for more fun (or you like to confuse more people make them suffer as well :P) can be:

* !src !assets !go !justforfun !scripts !package.json 

In this way you ignore everything, but exclude what you want to be copied or added only from the "ignore list".

It is a late answer but adding more ways to do the same covers even more cases.

4

You can use COPY. You need to specify the directory explicitly. It won't be created by itself

COPY go /usr/local/go 

Reference: Docker CP reference

This can help if you want to add all files to a specified location

#ADD XML SUITE files ADD src/test/resources/xmls/* /usr/share/tag/

As the official docs state:

The directory itself is not copied, just its contents.

The trick is to concat in the <dest> path also the folder name, like this:

COPY src ./src 

Even if ./src does not exist in the container yet, the command COPY internally creates it and copies the content of src into the new folder (which is ./src).