Java Spring Boot的Docker基本映像(`FROM`)是什么?

问题描述 投票:6回答:2

什么Docker基础映像(FROM)用于Java Spring Boot应用程序?

我刚开始使用docker,我发现FROM中的Dockerfile可以为Java定义图像

FROM java:8

如果我使用Gradle(或Maven)进行构建是更好的基本映像,以便开始避免以后配置Gradle / Maven项目的常见内容?

当然Spring Boot应用程序只是构建输出文件夹中的.jar文件,关于如何使用Docker运行的问题应该少一些(对于使用标准构建工具构建的Java项目)

java spring docker spring-boot dockerfile
2个回答
7
投票

有关如何将Spring-Boot与Docker集成的很好的文档:https://spring.io/guides/gs/spring-boot-docker/

基本上你在src/main/docker/Dockerfile中定义dockerfile并配置docker-maven-plugin,如下所示:

<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:slim
VOLUME /tmp
ADD gs-spring-boot-docker-0.1.0.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

请注意,在此示例中,FROM frolvlad/alpine-oraclejre8:slim是一个基于Alpine Linux的小型脚印图像。

您还应该能够使用标准Java 8映像(基于Debian并且可能具有更大的占用空间)。可在此处找到可用的Java Baseimages的广泛列表:https://github.com/docker-library/docs/tree/master/openjdk


3
投票

我正在使用使用基础docker image fabric8 / java-alpine-openjdk8-jdk:1.2的结构插件。不需要Dockerfile,它是由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>

目标是fabric8:构建以创建docker镜像和fabric8:推送推送docker镜像注册表。

mvn clean install fabric8:build fabric8:push
© www.soinside.com 2019 - 2024. All rights reserved.