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