如何使用fabric8工具在最终的docker镜像中包含/复制静态文件

时间:2016-11-11 15:13:00

标签: openshift fabric8

我使用Fabric8 Maven工具链在Openshift上构建和部署我的Camel应用程序。我使用Camel Boot方法...我的Mvn配置文件执行以下目标:clean install docker:build fabric8:json fabric8:appl

一切都好!除了我使用index.html作为Camel路线应用程序的一部分提供静态文件(Jetty)。该文件位于$MY_PROJECT_DIR/src/main/resources。因此,它会在正常mvn build之后进入应用程序的类路径。但是当使用fabric8构建工作流时,我的应用程序(Camel路由)无法在文件系统类路径上找到静态内容?

如何指定fabric8插件来复制最终构建映像的/deployments内的静态内容?因此我的camel端点可以在文件系统上引用它。我正在寻找类似maven-resources-plugin的内容。

1 个答案:

答案 0 :(得分:1)

好吧,深入研究src代码我发现你有两个选择来实现这个目标......

  1. <强> HAWT-APP-行家-插件

    如果您使用hawt-app-maven-plugin [1],就像我一样,您可以使用hawt-app.source配置属性 在打包/构建过程中,src/main/hawt-app中指定的目录(默认为hawt-app.source)的所有内容都将复制到${project.build.directory}/hawt-app/

  2. <强>搬运工-行家-插件

  3. 使用fabric8的docker-maven-plugin程序集配置[2],您可以传递自定义maven程序集描述符。像这样:

    项目的 pom.xml

    <plugin>
      <groupId>io.fabric8</groupId> 
      <artifactId>docker-maven-plugin</artifactId>
      <version>${docker.maven.plugin.version}</version>
      <configuration>
        <images>
          <image>
            <name>${docker.image}</name>
            <build>
            <from>${docker.from}</from>
            <assembly>
              <basedir>/deployments</basedir>
              <!-- descriptorRef>hawt-app</descriptorRef -->
              <descriptor>${project.basedir}/src/main/resources/hawt-app-custom-assembly.xml</descriptor>
            </assembly>
    

    <强> HAWT-APP-定制assembly.xml

    <assembly ...>
      <id>hawt-app</id>
      <fileSets>
        <fileSet>
          <includes>
            <include>bin/*</include>
          </includes>
          <directory>${project.build.directory}/hawt-app</directory>
          <outputDirectory>.</outputDirectory>
          <fileMode>0755</fileMode>
        </fileSet>
        <fileSet>
          <includes>
            <include>lib/*</include>
          </includes>
          <directory>${project.build.directory}/hawt-app</directory>
          <outputDirectory>.</outputDirectory>
          <fileMode>0644</fileMode>
        </fileSet>
        <!-- assembly extention... -->
        <fileSet>
          <includes>
            <include>static-content/*</include>
          </includes>
          <directory>${project.basedir}/src/main/resources</directory>
          <outputDirectory>.</outputDirectory>
          <fileMode>0644</fileMode>
        </fileSet>
      </fileSets>
    </assembly>
    

    [1] https://github.com/fabric8io/fabric8/tree/master/hawt-app-maven-plugin

    [2] https://maven.fabric8.io/#fabric8:build

    [3] http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html