Search code examples
dockerfilecoreos

Dockerfile copying war to local linked volume


I have a note app that I am building with a Dockerfile in the maven app. I want to copy the artifact note-1.0.war to local linked volume to folder like webapps. So far I have the following in a Dockerfile:

FROM maven:latest
MAINTAINER Sonam <[email protected]>
RUN apt-get update 

WORKDIR /code

#Prepare by downloading dependencies
ADD pom.xml /code/pom.xml
RUN ["mvn", "dependency:resolve"]
RUN ["mvn", "verify"]

#Adding source, compile and package into a fat jar
ADD src /code/src
RUN ["mvn", "clean"]
#RUN ["mvn", "install"]
RUN ["mvn", "install", "-Dmaven.test.skip=true"]
RUN mkdir webapps

COPY note-1.0.war webapps
#COPY code/target/note-1.0.war webapps

Unfortunately, I keep seeing the "no such file or directory" at the COPY statement. The following is the error from build on Docker hub:

...
---> bd555aecadbd

Removing intermediate container 69c09945f954

Step 11 : RUN mkdir webapps

 ---> Running in 3d114c40caee

 ---> 184903fa1041

Removing intermediate container 3d114c40caee

Step 12 : COPY note-1.0.war webapps

lstat note-1.0.war: no such file or directory

How can I copy the war file to a "webapps" folder that I executed in

RUN mkdir webapps

thanks


Solution

  • The COPY instruction copies new files or directories from <src> and adds them to the filesystem of the container at the path <dest>. In your example the docker build is looking for note-1.0.war in the same directory than Dockerfile. If I understand your intention, you want to copy a file inside the image that is build from previous RUN in Dockerfile. So you should use something like

    RUN cp /code/target/note-1.0.war /code/webapps