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



我正试图从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

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

  • sod java,它构建了一个可执行jar(只向/tmp/sod.txt写入一个文件(
  • sod docker,它使用Dockerfile创建了一个java高山图像
    • setup.sh在构建映像时运行。它运行java来创建/tmp/sod.txt
    • run.sh是写入/tmp/sod.txt文件内容的默认命令

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

  • https://github.com/sodved/java-docker-demo/blob/0.0.1-0/sod-docker/pom-depency.xml这是我的第一次尝试。在程序集中使用dependecySet。但我注意到,依赖项甚至没有包含在/target文件夹中(我认为是因为在sod docker中没有实际的java代码可编译,所以没有复制依赖项(
  • https://github.com/sodved/java-docker-demo/blob/0.0.1-0/sod-docker/pom.xml这是我的第二次尝试。它首先显式地将工件复制到/target文件夹中(有效(。然后在程序集中使用file尝试复制该文件

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

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

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

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

好的,已经解决了。

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

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

但作为这里的医生(http://dmp.fabric8.io/#property-configuration(表示,这意味着pom.xml中的<build>配置(包括我的程序集(将被忽略。我不确定为什么我们的标准使用外部配置,会在这方面追上我们的操作人员。但去掉这个<external>部分,一切都会成功。

相关内容

  • 没有找到相关文章

最新更新