【问题标题】:fabric8io docker-maven-plugin assembly and external artifactfabric8io docker-maven-plugin 组件和外部工件
【发布时间】:2020-04-07 02:26:30
【问题描述】:

我正在尝试从 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 alpine 映像
    • setup.sh 在构建映像时运行。它运行java来创建/tmp/sod.txt
    • run.sh是默认命令写入/tmp/sod.txt文件的内容

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

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

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

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

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

【问题讨论】:

    标签: java docker maven docker-maven-plugin fabric8-maven-plugin


    【解决方案1】:

    好的,已经解决了。

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

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

    但是正如这里的文档 (http://dmp.fabric8.io/#property-configuration) 所说,这意味着 pom.xml 中的 &lt;build&gt; 配置(包括我的程序集)将被忽略。我不确定为什么我们的标准使用外部配置,会追赶我们的运维人员。但是删除这个&lt;external&gt; 部分,一切正常。

    【讨论】:

      猜你喜欢
      • 2019-09-01
      • 1970-01-01
      • 2012-07-14
      • 1970-01-01
      • 2013-08-13
      • 2018-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多