2016-08-24 29 views
1

我想弄清楚如何使用fabric8 docker-maven-plugin构建一个spring boot docker镜像。该文档包含位和字节,我显然缺少一些东西。有没有人有一个完整的pom.xml的例子呢?fabric8 springboot完整示例

回答

2

如果你不必使用那个插件,我推荐spotify的docker-maven-plugin。安装完成后,您可以执行来构建泊坞窗图像。

pom.xml看起来是这样的:

... 
<properties> 
    <docker.image.prefix>springio</docker.image.prefix> 
</properties> 
<build> 
    <plugins> 
     <plugin> 
      <groupId>com.spotify</groupId> 
      <artifactId>docker-maven-plugin</artifactId> 
      <version>0.4.11</version> 
      <configuration> 
       <imageName>${docker.image.prefix}/${project.artifactId}</imageName> 
       <dockerDirectory>src/main/docker</dockerDirectory> 
       <buildArgs> 
        <finalName>${project.build.finalName}.jar</finalName> 
       </buildArgs> 
       <resources> 
        <resource> 
         <targetPath>/</targetPath> 
         <directory>${project.build.directory}</directory> 
         <include>${project.build.finalName}.jar</include> 
        </resource> 
       </resources> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
... 

Dockerfilesrc/main/docker看起来是这样的:

FROM openjdk:8u102-jre 
ARG finalName 
ADD $finalName /my-app.jar 
ENTRYPOINT ["java","-jar","/my-app.jar"] 

参考文献:

https://spring.io/guides/gs/spring-boot-docker

https://github.com/spotify/docker-maven-plugin

1

如果您只想快速入门,那么fabric8 fabric8-maven-plugin文档很难挖掘到,所以这里有一个快速示例,您可以获取构建Docker映像所需的所有内容。

首先,请确保docker位于您的路径上,并且Docker守护进程正在运行。运行docker ps并确保这样的回应:

CONTAINER ID  IMAGE    COMMAND    CREATED    STATUS    PORTS    NAMES 

添加到您的pom.xml与

<build> 
    <plugins> 
     <plugin> 
      <groupId>io.fabric8</groupId> 
      <artifactId>fabric8-maven-plugin</artifactId> 
      <configuration> 
       <verbose>true</verbose> 
       <images> 
        <image> 
         <!-- Replace your-project-name --> 
         <name>your-project-name:${project.version}</name> 

         <build> 

          <!-- This is the same FROM used in a Dockerfile --> 
          <from>vixns/java8</from> 

          <!-- This is the same ENTRYPOINT used in a Dockerfile --> 
          <entryPoint> 
           <exec> 
            <arg>java</arg> 
            <!-- This extra argument is so Tomcat can start faster due to lack of entropy --> 
            <arg>-Djava.security.egd=file:/dev/./urandom</arg> 
            <arg>-jar</arg> 
            <!-- /maven/ is the default dir that the plugin copies your artifact to --> 
            <arg>/maven/${project.artifactId}.${project.packaging}</arg> 
           </exec> 
          </entryPoint> 

          <assembly> 
           <!-- This is a predefined assembly.xml that will only copy your final artifact to the Docker image --> 
           <descriptorRef>artifact</descriptorRef> 
          </assembly> 
         </build> 
        </image> 
       </images> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

注意运行:如果你想使用mvn docker:start你需要额外的设置命令。您不必使用它,如果您愿意,可以使用标准docker命令。

0

Here is one of使用fabric8的工作示例。该项目使用Spring Boot Docker镜像,然后将其链接到mongodb。

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
     </plugin> 
     <plugin> 
      <groupId>io.fabric8</groupId> 
      <artifactId>docker-maven-plugin</artifactId> 
      <version>0.20.0</version> 
      <configuration> 
       <!--<dockerHost>tcp://REMOTE_IP:2375</dockerHost> --> 
       <images> 
        <image> 
         <name>springboot-mongo-dockerimage:${project.version}</name> 
         <alias>springboot-mongo-dockerimage</alias> 
         <build> 
          <dockerFileDir>${project.basedir}</dockerFileDir> 

         </build> 
         <run> 
          <namingStrategy>alias</namingStrategy> 
          <dependsOn> 
           <container>mongo</container> 
          </dependsOn> 

          <links> 
           <link>mongo</link> 
          </links> 
          <ports> 
           <port>8080:8080</port> 
          </ports> 
         </run> 
        </image> 
       </images> 
      </configuration> 

      <executions> 
       <execution> 
        <id>start</id> 
        <phase>pre-integration-test</phase> 
        <goals> 
         <goal>stop</goal> 
         <goal>build</goal> 
         <goal>start</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

您可以follow this link的分步说明

然而,而不是建立从fabric8 Maven插件图片,你可以使用Dockerfile我觉得这更方便的使用,这就是为什么你会发现

<build> 
    <dockerFileDir>${project.basedir}</dockerFileDir> 
</build> 

DokcerFile

FROM java:8 
VOLUME /tmp 
ADD target/Boot-0.0.1-SNAPSHOT.jar app.jar 
EXPOSE 8080 
RUN bash -c 'touch /app.jar' 
ENTRYPOINT ["java","-Dspring.data.mongodb.uri=mongodb://mongo/test", "-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] 

如果要将图像推送到Docker中心注册表,则可以使用this link