通过fabric8io docker-maven-plugin将.war部署到Docker镜像中

Fra*_*sco 10 docker fabric8 maven-docker-plugin

我是非常新的Docker和fabric8io docker-maven-plugin.我有一些困难时期将.war部署到我的图像中jboss/wildfly.我可以通过命令行成功构建.war附带的图像,但我不能通过已经提到的插件来做同样的事情.据我所知,一旦你给出正确的背景,Dockerfile它应该只是一个问题:

<build>
  <finalName>${project.build.finalName}.${project.packaging}</finalName>
  ...
  <assembly>
    <descriptorRef>artifact</descriptorRef>
  </assembly>
</build>
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

[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] ------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

是我的沙盒.

更新: 我清理了一些乱七八糟的东西.现在它看起来像这样:

<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>
Run Code Online (Sandbox Code Playgroud)

现在我收到此错误:

...    
[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]
...
Run Code Online (Sandbox Code Playgroud)

相应的文档,dockerFileDirdockerFile标记图像构建上下文一起使用.

Fra*_*sco 2

我误解了 Fabric8io docker 插件文档。您可以一起使用dockerFileDirdockerFile但构建上下文不会被设置为dockerFileDir值。要部署我的工件,target我必须将其放入Dockerfile项目的根目录,dockerFileDir使用项目根路径设置值,dockerFile从我的pom. 我的沙箱就是这样更新的。下一步是通过assemblybuildconf中使用以更简洁的方式实现相同的目的。