Dockerfile COPY from a Windows file system to a docker container

Viewed 35146

I have a simple Dockerfile:

FROM php:7.1-apache
LABEL maintainer="rburton@agsource.com"
COPY C:/Users/rburton/code/MyAgsourceAPI /var/www

It is the last line that is giving me problems. I am copying from a Windows structure to a docker container (Linux I assume). When I build this image I get:

...
Step 3/3 : COPY C:/Users/rburton/code/MyAgsourceAPI /var/www
COPY failed: stat /var/lib/docker/tmp/dockerbuilder720374851/C:/Users/rburton/code/MyAgsourceAPI: no such file or directory

First, something is preventing the recognition that this is an absolute path and naturally if the path is pre-pended with /var/lib/docker/tmp/dockerbuilder720374851 then the file will not be found. Second, I have tried / and \ but all with the same result. Also the drive letter I suspect is confusing to docker. So the question is how do I copy files and folders (along with the contents) from a Windows folder to a docker container?

3 Answers

First, change your Dockerfile to:

FROM php:7.1-apache
LABEL maintainer="rburton@agsource.com"
COPY MyAgsourceAPI /var/www

Then, to go your code directory: cd Users/rburton/code.

Within that directory, run: docker build -t <image_name> .

Another tip that might be helpful, I've seen same issue while running build from correct context, and issue remained until I've used all small caps on src folder that I wanted to copy from. eg:

COPY MyAgsourceAPI /var/www -> COPY myagsourceapi /var/www

The root of the path is relative to the Dockerfile and not your Windows filesystem.

If for example your filesystem is layed out like this:

+-+-MyProject
  |
  +---Dockerfile
  |
  +-+-build
    |
    +---MyAgsourceAPI

You can use:

COPY /build/MyAgsourceAPI /var/www

Note that "MyProject" (or anything above it) is excluded from the path.

Related