Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

fabric8 springboot full example

I am trying to figure out how to build a spring boot docker image using fabric8 docker-maven-plugin. The documentation contains bit and bytes and I'm obviously missing something. Does anyone have a full pom.xml example for it?

like image 541
YaOg Avatar asked Aug 24 '16 14:08

YaOg


2 Answers

The fabric8-maven-plugin documentation is pretty hard to dig through if you just want to get started quickly, so here's a quick example for everything you need to get a Docker image built.

First, make sure docker is on your path and the Docker daemon is running. Run docker ps and ensure a response like this:

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

Add this to your pom.xml and run this with mvn clean package docker:build

<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>

Note: you'll need additional setup if you want to use the mvn docker:start command. You don't have to use it, you can use the standard docker command if you'd like.

like image 51
dustin.schultz Avatar answered Nov 07 '22 21:11

dustin.schultz


Here is one of Working example using fabric8. This project uses spring boot docker image and then link it to 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>

You can follow this link for step by step instructions

However rather than building Image from fabric8 maven plugin, you can use the Dockerfile which I find more convenient using and that is why you would notice

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

DockerFile

    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"]

If you want to push your images to Docker hub registry then you can use this link.

like image 20
Abhishek Galoda Avatar answered Nov 07 '22 23:11

Abhishek Galoda