2017-01-30 13 views
0

У меня есть приложение для заметок, которое я создаю с помощью файла Docker в приложении maven. Я хочу скопировать артефакт note-1.0.war в локальный связанный том в папку, например webapps. До сих пор я следующий в Dockerfile: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 

К сожалению, я продолжаю не видеть «нет такого файла или каталога» в заявлении COPY. Ниже ошибка из сборки на Докер хаба:

... 
---> 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 

Как я могу скопировать архив войны к «WebApps» папку, которую я исполнил в

RUN mkdir webapps 

благодаря

+0

ошибки не о WebApps папки, но о записной 1.0.war, который, кажется, не присутствует в вашем рабочем каталоге. – gile

+0

Да, похоже, он не может его найти. Вы знаете, как я могу это сделать, чтобы «найти» его и скопировать? – Sonam

+0

Вы удвоили. У вас есть note-1.0.war в том же каталоге, где вы сохранили файл Dockerfile? Посмотрите подробнее о COPY https://docs.docker.com/engine/reference/builder/#/copy – gile

ответ

1

COPY инструкции копирует новые файлы или каталоги с <src> и добавляет их в файловую систему контейнера по пути <dest>. В вашем примере сборка docker ищет note-1.0.war в том же каталоге, что и Dockerfile. Если я понимаю ваше намерение, вы хотите скопировать файл внутри изображения, которое создается из предыдущего RUN в Dockerfile. Таким образом, вы должны использовать что-то вроде

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