標籤:
| 17down votefavorite4 |
In my Dockerfile I‘ve got : ADD ../../myapp.war /opt/tomcat7/webapps/
That file exists as ls ../../myapp.war returns me the correct file but when I execute sudo docker build -t myapp . I‘ve got : Step 1 : ADD ../../myapp.war /opt/tomcat7/webapps/2014/07/02 19:18:09 ../../myapp.war: no such file or directory
Does somebody know why and how to do it correctly? docker
| shareimprove this question |
asked Jul 2 ‘14 at 17:24Anthony O.3,5103365 |
|
| |
|
|
Some workarounds superuser.com/questions/842642 – Günter Zöchbauer Nov 30 ‘14 at 19:51 |
add a comment |
3 Answersactiveoldestvotes
| up vote21down voteaccepted |
Unfortunately, (for practical and security reasons I guess), if you want to add/copy local content, it must be located under the same root path than the Dockerfile. From the documentation:
The <src> path must be inside the context of the build; you cannot ADD ../something/something, because the first step of a docker build is to send the context directory (and subdirectories) to the docker daemon.
EDIT: There‘s now an option (-f) to set the path of your Dockerfile ; it can be used to achieve what you want, see @Boedy ‘s response nelow.
| shareimprove this answer |
edited Jun 20 at 12:45 |
answered Jul 2 ‘14 at 20:01mbarthelemy5,56512228 |
|
| |
|
|
Is there a "clean" workaround for this? I‘d rather not restructure my whole project directory just to accommodate this. – ben_frankly Nov 21 ‘14 at 18:35 |
|
|
As said by @Günter, there is a workaround here superuser.com/a/842690/136024 ... is it really "clean"? Well at least it‘s a "workaround" :) – Anthony O. Dec 2 ‘14 at 8:39 |
|
|
See better answer from @Boedy stackoverflow.com/a/34300129/2950621 – nmgeek Jun 19 at 19:27 |
add a comment |
| up vote8down vote |
You can build the Dockerfile from the parent directory: docker build -t <some tag> -f <dir/dir/Dockerfile> .
| shareimprove this answer |
answered Dec 15 ‘15 at 21:54Boedy388515 |
|
| |
|
|
Worked smoothly ;) – Souciance Eqdam Rashti Mar 2 at 10:51 |
|
|
Thank you! This works fine on a local box, but Docker Hub fails to build the image since it tries to do it from its same directory (tbh, just what one would normally expect). Is there any way to do the same trick in Docker Hub? – Marcel Hernandez Mar 25 at 20:31 |
|
|
Not that I know of. You could push the image to the registry instead of using automated build. – Boedy Mar 29 at 9:15 |
|
|
This should be marked as the right answer – Courtland Caldwell Jun 15 at 19:09 |
add a comment |
| up vote0down vote |
The solution for those who use composer is to use a volume pointing to the parent folder: #docker-composer.ymlfoo: build: foo volumes: - ./:/src/:ro
But I‘m pretty sure the can be done playing with volumes in Dockerfile.
|
Docker: adding a file from a parent directory