GraalVM打包Java、springboot程序,windows、Linux、docker环境毫秒启动发布

环境配置
1、安装VisualStudio

这边如果C盘条件允许的话不建议修改默认的安装路径,我就是因为改了默认的安装路径,在后续配置环境的时候出现了好多问题

https://visualstudio.microsoft.com/zh-hans/free-developer-offers/

2)、安装成功之后需要重启电脑,当下图程序可以运行后则为安装成功

2、安装graalVM(可以使用Idea安装)

官网安装和jdk安装配置完全一样,下载包,将电脑原先的环境切换使用即可

  • 官网下载:GraalVM

  • 网盘地址: \\192.168.16.99\研发部\5 预研\springboot3

验证JDK环境为GraalVM提供的即可:

3、native-image 依赖,直接cmd下载(需要较好的网络环境)
gu install native-image

验证:

native-image

4、windows环境下编译普通的java程序

​ 1)、准备好一个可执行的jar包文件,打包方式和以前一样。Java -jar能正常运行。这种打包方式就是上面说的Java的编译过程,默认是解释执行,性能较低

​ 2)、使用native-image打包本地镜像

#从入口开始,编译整个jar
native-image -cp graalVM-aot-test-1.0-SNAPSHOT.jar com.yscz.MainApplication -o hello

#编译某个类【必须有main入口方法,否则无法编译】
native-image -cp .\classes org.example.App

​ 3)、执行成功后,会在目录下出现一个exe程序,执行这个exe程序,效果一样

5、Linux环境下编译普通Java程序

​ 1)、安装gcc环境

sudo apt update

sudo apt install gcc libc6-dev zlib1g-dev

2)、安装graalVM

  • 官网下载:https://www.graalvm.org/

  • 网盘:\\192.168.16.99\研发部\5 预研\springboot3

​ 解压压缩包(没有的目录需要提前创建一下)

tar -zxvf graalvm-jdk-17_linux-x64_bin.tar.gz -C /opt/java/

​ 配置环境变量(如果之前使用apt安装过jdk的需要提前卸载,因为apt安装的jdk优先级较高,这边配置的可能不会生效)

vim /etc/profile

export JAVA_HOME=/opt/java/graalvm-jdk-17.0.11+7.1
export PATH=$PATH:$JAVA_HOME/bin

source /etc/profile

​ 验证

​ native-image 依赖

gu install native-image

​ 编译jar文件

native-image -cp graalVM-aot-test-1.0-SNAPSHOT.jar com.yscz.MainApplication -o hello

​ 直接运行

总结:上述案例是将一个最简单的Java程序编译成本地镜像,在windows和Linux上环境上都成功了,但是对于一些动态的反射的方法和对象graalvm是无法编译的

​ 优点:编译之后的程序启动更快,体积更小

​ 缺点:

​ 1、编译过程太长,环境配置过于复杂

​ 2、对于一些动态的,反射的方法对象无法编译,需要做额外的处理。并且并不是所有的框架都支持graalvm的编译,但是spring全系列都是支持的,springboot对于反射和动态的代码都做了优化。

6、springboot编译

1.环境配置(很重要,并且坑较多)

path:主要是graalvm和visualStudio的配置

INCLUDE:都是visualStudio开发环境的配置

lib:这边是c++需要用到的一些程序包

2.创建springboot项目,并引入graalvm的native-image组件

<build>
		<plugins>
			<plugin>
				<groupId>org.graalvm.buildtools</groupId>
				<artifactId>native-maven-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

3.将idea的控制台的选项修改成cmd级别的,不修改的话等下打包的时候gu命令会找不到(默认是pwoerShell)

​ 4.当maven引入了依赖之后,在右边的maven控制台就会出现以下两个重要的选项。第一个是启用native的环境,第二个是使用native打包成本地镜像

5.打包。直接点击native:compile,就会在target目录下生成一个可直接运行的exe文件

7、Linux下编译springboot可执行文件

​ 1)、配置maven环境

sudo apt install maven
mvn -version

​ 2)、上传代码/git拉取

​ 3)、编译执行(编译过程非常慢,但是启动速度几乎是毫秒级别的,可以和同目录下的.jar文件执行对比一下)

mvn -Pnative native:compile

8、docker镜像运行springboot可执行文件

1)、首先需要执行上述第七步的步骤,将代码上传或者拉取到本地,并编译好一个可执行文件

2)、编写一个最简单的Dockerfile即可(因为直接是一个可执行文件,所以不需要依赖于其他镜像)

FROM debian:stable-slim
ADD ./target/springboot3-demo /usr/local/springboot3-demo
CMD ["/usr/local/springboot3-demo"]
EXPOSE 8080

3)、构建镜像

docker build -t springboot3-demo:1.0 .

4)、直接docker运行即可

docker run -p 9090:9090 springboot3-demo:1.0
  • 11
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您好!对于使用Spring Boot部署到Linux上的Docker环境,您可以按照以下步骤进行操作: 1. 首先,确保您已经在Linux服务器上安装了Docker,并且Docker服务已经启动。 2. 将您的Spring Boot项目打包成一个可执行的JAR文件。您可以使用Maven或者Gradle来完成这个步骤。 3. 创建一个Dockerfile,用于构建Docker镜像。在项目根目录下创建一个名为`Dockerfile`的文件,并添加以下内容: ``` FROM adoptopenjdk:11-jre-hotspot WORKDIR /app COPY target/your-project.jar app.jar EXPOSE 8080 ENTRYPOINT ["java", "-jar", "app.jar"] ``` 这个Dockerfile使用了AdoptOpenJDK提供的Java 11运行时环境,并将可执行的JAR文件复制到容器的`/app`目录下。 4. 使用Docker命令构建镜像。在项目根目录下执行以下命令: ``` docker build -t your-image-name . ``` 这个命令会根据Dockerfile构建一个名为`your-image-name`的镜像。注意命令最后的`.`表示Dockerfile所在的当前目录。 5. 运行Docker容器。执行以下命令: ``` docker run -d -p 8080:8080 your-image-name ``` 这个命令会在后台运行一个名为`your-image-name`的容器,并将容器的8080端口映射到宿主机的8080端口上。 现在,您的Spring Boot项目已经通过Docker部署在Linux上了。您可以通过访问服务器的IP地址加上端口号来访问您的应用程序,例如:`http://your-server-ip:8080`。 希望对您有所帮助!如有任何问题,请随时提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值