I have read http://docs.docker.com/engine/reference/builder/#add 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.
Type "xcopy", "source", "destination" /t /e in the Command Prompt window. Instead of “ source ,” type the path of the folder hierarchy you want to copy. Instead of “ destination ,” enter the path where you want to store the copied folder structure. Press “Enter” on your keyboard.
Copying Directories with cp Command To copy a directory, including all its files and subdirectories, use the -R or -r option.
In order to copy a directory on Linux, you have to execute the “cp” command with the “-R” option for recursive and specify the source and destination directories to be copied.
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
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With