gpt4 book ai didi

java - Docker 化 Spring Boot 应用程序

转载 作者:行者123 更新时间:2023-12-02 11:43:56 26 4
gpt4 key购买 nike

上下文:它是一个用 Kotlin 编写的应用程序,并使用 Spring-boot 和 Maven。

基本上,我想知道我正在做的事情是否有意义。

运行mvn install,然后将使用相应的jar文件创建target文件夹。因此,Dockerfile 将只是将 jar 文件复制到容器的工作目录中并运行 java -jar WHATEVER.jar

简单的Dockerfile示例

FROM openjdk:8-jre-alpine

COPY target/app-DEV-SNAPSHOT.jar .
EXPOSE 8089
CMD ["java", "-jar", "./app-DEV-SNAPSHOT.jar"]

但我想说,对我来说,使用多阶段构建更有意义,在第一阶段生成 jar 文件,在第二阶段执行它。我尝试了第二种方法,但遇到了主类不存在

的问题

多阶段 Dockerfile:

FROM maven:3.5.2-jdk-8-alpine as BUILD

ENV APP_HOME=/usr/src/service
COPY ./src /usr/src/service
COPY pom.xml /usr/src/service
WORKDIR /usr/src/service
RUN mvn install
FROM openjdk:8-jre-alpine
COPY --from=BUILD /usr/src/service/target/app-DEV-SNAPSHOT.jar ./
EXPOSE 8080
CMD ["java", "-jar", "./app-DEV-SNAPSHOT.jar"]

哪一个是正确的?

最佳答案

您应该使用多级 dockerfile。原因是您希望尽量减少对主机系统的依赖。当您在主机上运行 mvn 时,您会添加 mvn 的依赖项,然后添加 java.util.concurrent.mvn 的依赖项。

我的建议是使用多阶段 docker 在一个阶段中构建并复制到另一个阶段

关于java - Docker 化 Spring Boot 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48336987/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com