Java fabric8io docker maven插件程序集和外部工件

Java fabric8io docker maven插件程序集和外部工件,java,docker,maven,docker-maven-plugin,fabric8-maven-plugin,Java,Docker,Maven,Docker Maven Plugin,Fabric8 Maven Plugin,我试图从maven中创建一个docker映像,其中包含来自不同maven项目的工件。但我复制的例子似乎不起作用 我想这里的问题是我不太了解组件是如何工作的,所以我想在这里寻求帮助。我已经建立了一个人为的简单示例,说明我在这里要做的事情: 因此,我的项目有两个模块: sod java,它构建了一个可执行jar(它只将一个文件写入/tmp/sod.txt) sod docker,使用Dockerfile创建java alpine映像 在生成映像时运行setup.sh。它运行java来创建/tm

我试图从maven中创建一个docker映像,其中包含来自不同maven项目的工件。但我复制的例子似乎不起作用

我想这里的问题是我不太了解组件是如何工作的,所以我想在这里寻求帮助。我已经建立了一个人为的简单示例,说明我在这里要做的事情:

因此,我的项目有两个模块:

  • sod java,它构建了一个可执行jar(它只将一个文件写入
    /tmp/sod.txt
  • sod docker,使用Dockerfile创建java alpine映像
    • 在生成映像时运行setup.sh。它运行java来创建
      /tmp/sod.txt
    • run.sh是写入
      /tmp/sod.txt
      文件内容的默认命令
我尝试了两种方法,内联
是我的第一次尝试。在部件中使用
dependcyset
。但是我注意到依赖项甚至没有包含在
/target
文件夹中(我假设是因为在sod docker中没有要编译的实际java代码,所以依赖项没有被复制)
  • 这是我的第二次尝试。它首先将工件显式复制到
    /target
    文件夹中(该文件夹有效)。然后在程序集中使用
    文件
    ,尝试复制该文件
  • 在这两种情况下,我看不到程序集在任何地方复制的jar文件,也看不到docker插件创建的tar文件中复制的jar文件,因此在Dockerfile
    COPY
    命令中尝试引用jar时出错

    我知道这个例子有点做作。但它很简单,符合我们工作中的标准方式。所以我在工具、布局等方面没有太多的灵活性

    实际案例用于构建数据库映像。获取基本映像,运行java代码来操作数据库,另存为新映像以供下游使用

    TLDR:
    如何指定groupId、artifactId和version,并在docker映像中包含相应的工件。docker源代码本身不包含java。

    好的,我们已经弄明白了

    问题是pom.xml指定了一些外部配置

    <external>
        <type>properties</type>
        <prefix>docker</prefix>
        <mode>override</mode>
    </external>
    
    
    性质
    码头工人
    推翻
    
    但是正如doco here()所说,这意味着pom.xml中的
    配置(包括我的程序集)将被忽略。我不知道为什么我们的标准使用外部配置,将追查我们的ops人员。但是删除这个
    部分,一切都正常

    <external>
        <type>properties</type>
        <prefix>docker</prefix>
        <mode>override</mode>
    </external>