What Docker base image (`FROM`) for Java Spring Boot? What Docker base image (`FROM`) for Java Spring Boot? docker docker

What Docker base image (`FROM`) for Java Spring Boot?


There's a nice documentation on how to integrate Spring-Boot with Docker: https://spring.io/guides/gs/spring-boot-docker/

Basically you define your dockerfile in src/main/docker/Dockerfile and configure the docker-maven-plugin like this:

<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>            <resources>                <resource>                    <targetPath>/</targetPath>                    <directory>${project.build.directory}</directory>                    <include>${project.build.finalName}.jar</include>                </resource>            </resources>        </configuration>    </plugin></plugins>

Dockerfile:

FROM frolvlad/alpine-oraclejre8:slimVOLUME /tmpADD gs-spring-boot-docker-0.1.0.jar app.jarRUN sh -c 'touch /app.jar'ENV JAVA_OPTS=""ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

Note that in this example FROM frolvlad/alpine-oraclejre8:slim is a small-footprinted image which is based on Alpine Linux.

You should also be able to use the standard Java 8 image (which is based on Debian and might have an increased footprint) as well. An extensive list of available Java Baseimages can be found here: https://github.com/docker-library/docs/tree/master/openjdk.


I am using the fabric plugin which uses the base docker image fabric8/java-alpine-openjdk8-jdk:1.2. There is no need for a Dockerfile, it is created by the plugin.

<build>    <finalName>${project.artifactId}-${project.version}</finalName>    <plugins>        <plugin>            <artifactId>maven-compiler-plugin</artifactId>            <version>3.3</version>            <configuration>                <source>1.8</source>                <target>1.8</target>            </configuration>        </plugin>        <plugin>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-maven-plugin</artifactId>        </plugin>        <plugin>            <groupId>io.fabric8</groupId>            <artifactId>fabric8-maven-plugin</artifactId>            <version>3.2.28</version>        </plugin>    </plugins></build>

Targets are fabric8:build to create docker image and fabric8:push to push docker image registry.

mvn clean install fabric8:build fabric8:push