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