2017-02-07 3 views
8

Я очень новичок в Docker и в ткани8io docker-maven-plugin. У меня есть некоторые трудные времена для развертывания .war в моем изображении, полученном jboss/wildfly. Я могу успешно создать мой образ, поставляемый с .war по командной строке, но я не могу сделать то же самое уже упомянутым плагином. Насколько я читал, как только вы дать правильный контекст и Dockerfile это должно быть только вопрос:Развертывание .war в изображение Docker by fabric8io docker-maven-plugin

<build> 
    <finalName>${project.build.finalName}.${project.packaging}</finalName> 
    ... 
    <assembly> 
    <descriptorRef>artifact</descriptorRef> 
    </assembly> 
</build> 

но я получаю эту ошибку:

[INFO] <<< docker-maven-plugin:0.19.0:build (default-cli) < package @ YoOffer <<< 
[INFO] 
[INFO] --- docker-maven-plugin:0.19.0:build (default-cli) @ YoOffer --- 
[WARNING] Cannot include project artifact: edu.pezzati.yo:YoOffer:war:0.0.1-SNAPSHOT; it doesn't have an associated file or directory. 
[WARNING] The following patterns were never triggered in this artifact inclusion filter: 
o 'edu.pezzati.yo:YoOffer' 

[ERROR] DOCKER> Failed to create assembly for docker image (with mode 'dir'): Error creating assembly archive docker: You must set at least one file. 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 

Here моя песочница.

ОБНОВЛЕНИЕ: Я убираю какой-то беспорядок в моем пом. Теперь это выглядит следующим образом:

<images> 
    <image> 
     <alias>yowildfly</alias> 
     <name>jboss/wildfly</name> 
     <build> 
     <!-- 
      <assembly> 
       <descriptorRef>${project.basedir}/src/test/resources/DOCKER/assembly.xml</descriptorRef> 
      </assembly> 
     --> 
      <args> 
       <webapp>target/${project.build.finalName}.${project.packaging}</webapp> 
      </args> 
      <dockerFileDir>${project.basedir}</dockerFileDir> 
      <dockerFile>src/test/resources/DOCKER/wildfly/Dockerfile</dockerFile> 
      </build> 
      <run> 
       <ports> 
        <port>8080:8080</port> 
       </ports> 
      </run> 
     </image> 
... 
</images> 

Теперь я получаю эту ошибку:

...  
[ERROR] DOCKER> Unable to build image [jboss/wildfly] 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 8.769 s 
[INFO] Finished at: 2017-02-12T01:19:57+01:00 
[INFO] Final Memory: 36M/271M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal io.fabric8:docker-maven-plugin:0.19.0:build (default-cli) on project YoOffer: Unable to build image [jboss/wildfly]: lstat target/YoOffer.war: no such file or directory -> [Help 1] 
[ERROR] 
... 

соответственно документы, dockerFileDir используется вместе с dockerFile следует отметить контекст построения изображения.

ответ

1

Я неправильно понял fabric8io docker plugin docs. Вы можете использовать вместе dockerFileDir и dockerFile, но для контекста построения не будет установлено значение dockerFileDir. Чтобы развернуть мой артефакт от target, я должен поместить мой Dockerfile в корень моего проекта, установить значение dockerFileDir с корнем проекта, удалить запись dockerFile из моего pom. Мой sandbox обновляется таким образом. Следующим шагом является достижение того же более чистым способом, используя assembly в build conf.

Смежные вопросы