编程技术 2023-03-07 00:40:22 评论:0    浏览:50    

Dockfile

FROM maven:3.8-jdk-11 AS build-javacopy src /app/srcCOPY pom.xml /appRUN mvn -f /app/pom.xml clean packageFROM openjdk:11-jre-slimCOPY --from=build-java /app/target/app.jar /app/app.jarCOPY --from=build-java /app/target/lib /app/libENTRYPOINT ["java","-jar","/app/app.jar"]

pom.xml

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>http</artifactId> <version>1.0-SNAPSHOT</version> <properties> <!-- 指定 maven 编译时用的 jdk 版本,与 maven 基础镜像中的版本一致 --> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> </properties> <build> <!-- 指定项目最终生成的 jar 文件名,建议固定下来,方便在 Dockerfile 中 COPY 固定文件名 --> <finalName>app</finalName> <plugins> <plugin> <!-- 将项目源码编译成一个可执行 jar 包 --> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifest> <!-- 运行 jar 包时运行的主类,要求类全名 --> <mainClass>org.example.http.HttpTest</mainClass> <!-- 是否指定项目 CLASSPATH 下的依赖 --> <addClasspath>true</addClasspath> <!-- 指定依赖的时候声明前缀 --> <classpathPrefix>./lib/</classpathPrefix> <!-- 依赖是否使用带有时间戳的唯一版本号,如:xxx-1.3.0-20121225.012733.jar --> <useUniqueVersions>false</useUniqueVersions> </manifest> </archive> </configuration> </plugin> <plugin> <!-- 利用 maven-dependency-plugin 把当前项目的所有依赖放到 target 目录下的 lib 文件夹下 --> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>copy</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/lib</outputDirectory> </configuration> </execution> </executions> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>org.apache.httpcomponents.client5</groupId> <artifactId>httpclient5</artifactId> <version>5.1.3</version> </dependency> </dependencies></project>

设置maven-dependency-plugin 插件将所有依赖 jar 包拷贝到 ./lib 下,通过 maven-jar-plugin 插件打包 jar 时指定 main 函数所在 Class,让 jar 可执行,将依赖包放到 jar 包相对路径的 ./lib 下并自动加上 CLASSPATH。

以上内容为【构建 Java 容器镜像(Java web仿闲鱼 源代码)】的相关内容。

 
免责声明:

本文内容来自用户上传并发布或网络新闻客户端自媒体,本站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系删除。

 
0相关评论
打赏