Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Dockerfile COPY instruction failing?

Tags:

All, i'm trying to persistently copy files from my host to an image so those files are available with every container launched based on that image. Running on debian wheezy 64bit as virtualbox guest.

the Dockerfile is fairly simple (installing octave image):

FROM debian:jessie  MAINTAINER GG_Python <[redacted]@gmail.com> RUN apt-get update  RUN apt-get update RUN apt-get install -y octave octave-image octave-missing-functions octave-nan octave-statistics  RUN mkdir /octave RUN mkdir /octave/libs RUN mkdir /octave/libs/jsonlab COPY ~/octave/jsonlab/loadjson.m /octave/libs/jsonlab/. 

I'm getting the following trace after issuing a build command: docker build -t octave .

Sending build context to Docker daemon 423.9 kB Sending build context to Docker daemon  Step 0 : FROM debian:jessie  ---> 58052b122b60 Step 1 : MAINTAINER GG_Python <[..]@gmail.com>  ---> Using cache  ---> 90d2dd2f7ee8 Step 2 : RUN apt-get update  ---> Using cache  ---> 4c72c25cd829 Step 3 : RUN apt-get update  ---> Using cache  ---> b52f0bcb9f86 Step 4 : RUN apt-get install -y octave octave-image octave-missing-functions octave-nan octave-statistics  ---> Using cache  ---> f0637ab96d5e Step 5 : RUN mkdir /octave  ---> Using cache  ---> a2d278b2819b Step 6 : RUN mkdir /octave/libs  ---> Using cache  ---> 65efbbe01c99 Step 7 : RUN mkdir /octave/libs/jsonlab  ---> Using cache  ---> e41b80901266 Step 8 : COPY ~/octave/jsonlab/loadjson.m /octave/libs/jsonlab/. INFO[0000] ~/octave/jsonlab/loadjson.m: no such file or directory  

Docker absolutely refuses to copy this file from the host into the image. Needless to say a the file loadjson.m is there (cat displays), all my attempts to change the path (relative, absolute, etc.) failed. Any advice why this simple task is problematic?

like image 425
GG_Python Avatar asked Jan 21 '15 00:01

GG_Python


1 Answers

At the time I originally wrote this, Docker didn’t expand ~ or $HOME. Now it does some expansions inside the build context, but even so they are probably not what you want—they aren’t your home directory outside the context. You need to reference the file explicitly, or package it relative to the Dockerfile itself.

like image 154
kojiro Avatar answered Oct 06 '22 12:10

kojiro