【问题标题】:What Docker base image (`FROM`) for Java Spring Boot?Java Spring Boot 的 Docker 基础镜像(`FROM`)是什么?
【发布时间】:2017-06-07 20:12:03
【问题描述】:

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

我刚从docker开始,我看到FROM里面Dockerfile可以定义像Java一样的图像

FROM java:8

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

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

【问题讨论】:

  • Gradle 或 Maven 无关紧要,正如您在上一段中所写的,Spring Boot 应用程序只是一个 .jar,它是如何生成的并不重要。这就是使用默认 Java docker 构建映像的原因。

标签: java spring docker spring-boot dockerfile


【解决方案1】:

关于如何将 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 Baseimage 的广泛列表:https://github.com/docker-library/docs/tree/master/openjdk

【讨论】:

    【解决方案2】:

    我正在使用使用基础 docker 映像 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:build 来创建 docker 镜像和 fabric8:push 来推送 docker 镜像注册表。

    mvn clean install fabric8:build fabric8:push
    

    【讨论】:

    • 你知道基础镜像吗?
    • @PaulVerest 我已经更新了我的答案,请看一下,
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-26
    • 2020-01-20
    • 2017-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多