fabric8io docker-maven-plugin 组件和外部工件

fabric8io docker-maven-plugin assembly and external artifact

我正在尝试从 Maven 中创建一个 docker 图像,其中包含来自不同 Maven 项目的工件。但是我复制的示例似乎不起作用。

我认为这里的问题是我并不真正理解程序集是如何工作的,所以我在这里寻求帮助以了解我想做什么。我在这里设置了一个人为的简单示例:

https://github.com/sodved/java-docker-demo/tree/0.0.1-0

pom.xml
sod-java/pom.xml
sod-java/src/main/java/sodved/Sod.java
sod-docker/pom-depency.xml
sod-docker/pom.xml
sod-docker/src/main/docker/setup.sh
sod-docker/src/main/docker/Dockerfile
sod-docker/src/main/docker/run.sh

所以我的项目有两个模块:

到目前为止,我已经尝试了两种内联方法 <assembly>

在这两种情况下,我都没有看到程序集或 tar 插件创建的 tar 文件中复制的 jar 文件,因此在尝试引用 jar 时出现错误在 Dockerfile COPY 命令中。

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

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

TLDR: 如何指定 groupId、artifactId、version 并将相应的工件包含在我的 docker 图像中。 docker 源本身不包含 java.

好的,明白了。

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

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

但是正如此处的 doco (http://dmp.fabric8.io/#property-configuration) 所说,这意味着 pom.xml 中的 <build> 配置(包括我的程序集)将被忽略。我不确定为什么我们的标准使用外部配置,会追查我们的操作人员。但是删除这个 <external> 部分,一切正常。