10

I have a Dockerfile with the following line:

COPY *.zip ~user1

The user user1 already exists and has a home directory (i.e. /home/user1). The goal, of course, is to copy the zip file into that user's home dir, however the result of the above is that the zip file is copied to a file named literally /~user1 in the image.

The following does work as expected:

COPY *.zip /home/user1

Is this a bug in Docker or is there a limitation related to tilde expansion that I'm not aware of?

Using Docker 1.13.0 on Mac.

Dave L.
  • 8,707
  • 7
  • 39
  • 64
  • 1
    Tilde expansion is a feature of various unix/linux shells. The copy command is not processed by any of these shells. – BMitch Jan 30 '17 at 00:57

1 Answers1

11

Tilde expansion for COPY is not supported.

From The COPY docs:

The dest is an absolute path, or a path relative to WORKDIR, into which the source will be copied inside the destination container.

Example:

COPY test relativeDir/   # adds "test" to `WORKDIR`/relativeDir/
COPY test /absoluteDir/  # adds "test" to /absoluteDir/
Chris McKinnel
  • 13,244
  • 6
  • 60
  • 66