SpringBoot 项目发布部署,包含Linux部署及Docker部署
在我们项目开发完毕后,免不了就是发布部署,现在我们部署一般就是要么直接在linux服务上安装jdk环境部署或者部署到docker上,个人是比较推荐部署到docker上的,这篇文章就讲讲两种方式的具体部署流程。
一、Linux部署
1. 安装JDK
环境
yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
2. 上传打好的jar包
这一步可以直接本地打好jar包或者用Jenkins等构建工具构建好,然后传到服务器的相应位置。
3. 后台运行jar包
nohup java -jar -server springboot-02-0.0.1-SNAPSHOT.jar > springboot-02-0.0.1-SNAPSHOT.jar.log &
nohup
是linux系统提供的程序后台运行的命令java -jar
就是运行jar
包的命令-server
指用server
模式运行,内部使用了C2
的重量级编译器,这个模式相比默认的client
模式虽然启动速度有所降低,但是运行性能更高springboot-02-0.0.1-SNAPSHOT.jar.log
指日志文件
4. 启动脚本
这里给大家提供一个完整的启动脚本,方便大家使用
boot-jar.sh:
#!/bin/bash
nohup java -server -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms256m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC -jar "$1" > "$1.log" 2>&1 &
使用时先加一下执行权限,然后指定相应jar包启动
chmod u+x boot-jar.sh
./boot-jar.sh springboot-02-0.0.1-SNAPSHOT.jar
二、Docker部署
1. Dockerfile
文件
首先在项目根目录创建Dockerfile
文件,我们通过Dockerfile
来生成镜像,写入以下内容
FROM openjdk:8
COPY *.jar /app.jar
CMD ["--server.port=8081"]
EXPOSE 8081
ENTRYPOINT ["java", "-jar", "/app.jar"]
FROM
:指定openjdk的版本COPY
:把对应的jar包拷贝到容器里CMD
:指定运行的参数,如果有jvm调优的参数也可写到这里EXPORT
:指定容器暴露的端口ENTRYPOINT
:容器运行时执行的命令
2. 把打好的jar包及Dockerfile
文件上传到服务器
3. 构建Docker
镜像
docker build -t springboot-02 .
springboot-02
:为镜像名称,可改为对应的项目名称.
:命令最后有一个点符号,表示构建的目录为当前目录,即Dockerfile
所在目录
构建完成后通过docker images
去查看下这个镜像
4. 运行Docker
容器
docker run -d -p 8081:8081 --name springboot-02 springboot-02
-d
:后台运行-p
:端口映射,宿主机端口:容器端口
--name springboot-02
:运行的容器名称最后的springboot-02
:镜像的名称
运行成功后我们的项目在
Docker
中就部署完成了,线上服务器部署就是如此简单,但我们一般实际项目还会有一些jvm调优的参数,如初始运行内存、最大内存等。
转载自:https://juejin.cn/post/7248496133873860664