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 12Indeed 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.
4You 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).