Copy directory to other directory at Docker using ADD command

dockerfile copy directory recursively
dockerfile copy command
docker-compose copy file from container to host
dockerfile copy file to container
dockerfile copy example
docker copy no such file or directory
docker copy . . meaning
docker cp wildcard

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.

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

Docker ADD vs COPY: What is the Difference and Which One to Use?, Docker ADD Command The command copies files/directories to a file system of the specified container. It includes the source you want to copy ( <src> ) followed by the destination where you want to store it ( <dest> ). If the source is a directory, ADD copies everything inside of it (including file system metadata). JOIN thousands of technologists and change-makers at Transform 2020, a one-of-a-kind virtual event! RESERVE YOUR SPOT NOW

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

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 excluding what you want to be copied or added only from "ignore list".

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

docker cp, Use this command : ADD go /usr/local/. This command will basically copy all the content from the directory go into /usr/local/. If you wish to copy� Use this command : ADD go /usr/local/ This command will basically copy all the content from the directory go into /usr/local/ If you wish to copy the directory itself use this command. ADD go /usr/local/go or. COPY go /usr/local/go. Hope this helps

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

Docker Copy directory using ADD and COPY commands, The cp command behaves like the Unix cp -a command in that directories are For example, files copied to a container are created with UID:GID of the root user. thing in different ways (consider SRC_PATH and DEST_PATH are directories): docker app inspect � docker app install � docker app list � docker app merge� 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 you can try the below commands as well. COPY go /usr/local/go

WORKDIR, COPY, and ADD Instructions, Docker Copy directory using ADD and COPY commands $ vim Dockerfile FROM centos:7.4 Duration: 4:30 Posted: 18-Nov-2018 Docker Copy directory using ADD and COPY commands $ vim Dockerfile FROM centos:7.4.1708 RUN mkdir /mydata COPY myfiles /mydata/myfiles ADD myfiles2 /mydata/m

What is the Docker ADD command?, I went through this documentation http://docs.docker.com/engine/reference/ builder/#add but I am the local go directory does contain� How to COPY Files from the Dockerfile Parent Directory. I tried several combinations of command line arguments to include the parent directory in the context, and finally landed on the solution: start from the parent directlry, and pass the Dockerfile as an argument. To do this, first update the COPY command to use the current (./) directory:

What is the WORKDIR command in Docker?, The `WORKDIR` line specifies a new default directory within the image's file system. The COPY and ADD instructions allow you to copy files into your image's 0:18 When the container launches, the command specified by ENTRYPOINT or We use it here in our Python web app Docker file to create a /app directory to 0: 30� The command copies files/directories to a file system of the specified container. The basic syntax for the ADD command is: ADD <src> … <dest> It includes the source you want to copy (<src>) followed by the destination where you want to store it (<dest>).

Comments
  • I'm trying to use the multiple source version of ADD, and so I can't specify the target directory name for the destination. Is there a way to do what the OP asked in a multi-src format (i.e. without creating an ADD layer for each source directory)?
  • I just want to add a sidenote to this by saying that $HOME or ~ or any other shell variable will not work. I'm saying this because I spent good amount trying to figure this out than I'd like to admit even though it's glaringly obvious to most.
  • COPY go /usr/local/go doesn't work for me. Does not copy.
  • This is really quite a confusing matter. Why can't COPY simply behave like cp? Instead there needs to be an extra police how it works.
  • .dockerignore file can hide a directory and COPY or ADD will not work for listed items