给一个java springboot项目写dockerfile

先是看下pom.xml里面的java版本,然后选择基础镜像

# 官方OpenJDK镜像(推荐)
FROM openjdk:17-jdk-slim
FROM openjdk:11-jdk-slim
FROM openjdk:8-jdk-slim

# Eclipse Temurin(更好的性能)
FROM eclipse-temurin:17-jdk
FROM eclipse-temurin:11-jdk

可以使用多阶段构建
如果源路径为文件夹,复制的时候不是直接复制该文件夹,而是将文件夹中的内容复制到目标路径。

使用

FROM maven:3.8.5-openjdk-17 AS builder

作为构建jar包时的镜像
https://hub.docker.com/_/maven/tags
这里可以搜索一下tag,主要就是看下jdk版本。

后面使用

FROM openjdk:17-jdk-slim

作为运行环境
两个镜像分隔,可以使最后的的最终镜像大小变小

可以使用

COPY --from=builder

复制前一阶段的文件

如果使用springboot插件需要删除<skip>true</skip>
这个会使SpringBoot插件跳过打包过程
导致没有main-class,运行jar包时报错

no main manifest attribute, in /app/xxx.jar

示例:

FROM maven:3.8.5-openjdk-17 AS builder

COPY . ./app

WORKDIR /app

RUN mvn clean package -DskipTests

FROM openjdk:17-jdk-slim

COPY --from=builder /app/target/xxx-0.0.1-SNAPSHOT.jar /app/xxx.jar

EXPOSE 8080

CMD ["java", "-jar", "/app/xxx.jar"]
添加新评论