SpringBoot 项目的上线方式
项目构建与多环境
多环境的分类:
- 本地环境。可以理解为自己的电脑。
- 开发环境。开发人员远程开发,连接同一台机器。
- 测试环境:用于完成单元测试 / 性能测试 / 功能测试 / 系统集成测试,拥有独立的数据库、独立的服务器
- 预发布环境:和正式环境一致,正式数据库,更严谨。
- 正式环境:线上的,公开对外访问的项目。尽量不要改动。
- 沙箱环境:用于实验的环境。
通过配置环境区分多环境:
1 | application.yml # 公共配置 |
IDEA Maven 命令面板选择并执行对应项目的:Lifecycle
->package
命令进行打包。命令执行完成后将在 target 目录生成 jar 包。
SpringBoot 项目打包操作依赖
进行打包时需要引入 spring-boot-maven-plugin
。不过基于官方骨架创建项目,会自动添加这个插件。
打包时可以在 IDEA 的 Maven 命令面板中选择
Skip Tests
禁掉单元测试。
本地部署
执行以下命令:
1 | java -version # 确保Java可用 |
这样 SpringBoot 项目就会使用 application-prod.yml
的配置。
1 | # 观察 Springboot 启动日志可以看到 |
Linux+Nginx 部署
1 | # 检查java安装情况 |
把打好的 jar 包直接扔上服务器。假设我扔在这个目录中:/var/www/temp_test
。必要时给予权限:
1 | chmod a+x my-backend-0.0.1-SNAPSHOT.jar |
也可以是:本地代码上传到仓库,然后服务器使用 Git 拉取代码,在服务器中运行 maven (服务器中需提前安装好 maven,并配置好仓库源)进行打包操作
mvn package -DskipTests
。
Linux 运行命令以启动项目(后台运行):
1 | nohup java -jar ./my-backend-0.0.1-SNAPSHOT.jar & |
查看运行的程序:
1 | jobs # 查看运行程序 |
关于 nohup 命令详看:Linux 使用 nohup 后台运行程序
Nginx 配置文件:
1 | server{ |
前端项目部署方式可看:Ant Design Pro 前端项目初始化到部署上线
Docker 容器部署
Docker 是容器,可以将项目的环境(比如 java、nginx)和项目的代码一起打包成镜像,所有具有权限的用户都能下载镜像,更容易分发和移植。
启动项目时不需要敲更多的命令,而是通过下载镜像、启动镜像即可。
1 | docker --version # 验证Docker是否安装成功 |
Dockerfile 用于指定构建 Docker 镜像的方法,一般情况下不需要完全从 0 自己写,可以去 github、gitee 等托管平台参考同类项目(比如 springboot)参照写法。
Dockerfile 一般放置在项目的根目录中:
FROM
:依赖的基础镜像WORKDIR
:工作目录COPY
:从本机复制文件RUN
:执行命令CMD
/ENTRYPOINT
:指定运行容器时默认执行的命令,ENTRYPOINT
可以附加额外参数
1 | # Docker 镜像构建 |
Dockerfile 编写时,可以跳过 maven 的打包命令,直接将打好的 jar 包放入容器中也可以。这样还能减少体积,提升构建速度。
因为上面的 Dockerfile 中我们交给容器执行 maven 的打包命令,但是容器中 maven 仓库源为默认地址,下载速度极慢。我们需要配置 Maven 的下载源更换为阿里的镜像仓库。在项目主目录加上 settings.xml
文件,文件内容为:
1 | <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" |
这里演示在服务器中制作镜像。首先将代码上传到 Linux 服务器中。构建镜像:
1 | # 后端 |
运行镜像:
1 | # 后端 |
附 docker 常用命令:
1 | docker ps # 查看运行的镜像 |
其他方式
宝塔 Linux 部署
宝塔是一款 Linux 运维面板软件。可以更方便管理服务器软件或部署项目。
官网下载:宝塔面板下载,免费全能的服务器运维软件 (bt.cn)
建议在纯新系统安装宝塔面板,不支持已经部署项目/环境的系统进行安装。
容器托管平台的部署
容器平台:
- 云服务商的容器平台(腾讯云、阿里云)
- 面向某个领域的容器平台(前端 / 后端微信云托管)
使用容器平台的优点:
- 不需要购买云服务器
- 不用输命令来操作,更方便省事
- 不用在控制台操作,更傻瓜式、更简单
- 大厂运维,比自己运维更省心
- 额外的能力,比如监控、告警、其他(存储、负载均衡、自动扩缩容、流水线)
微信云托管:微信云托管 (qq.com)
本文参考
- 知识星球·编程导航 - 用户中心项目
- 如何部署网站?来比比谁的方法多 - 哔哩哔哩 (bilibili.com)
- 宝塔面板下载,免费全能的服务器运维软件 (bt.cn)
- Linux安装和jdk教程和更换jdk版本教程_linux jdk升级-CSDN博客
- 解决centos8下安装docker提示“为 repo ‘docker-ce-stable‘ 下载元数据失败“的问题_error: 为仓库 ‘docker-ce-stable’ 下载元数据失败 : cannot dow-CSDN博客
- dockerfile构建镜像报错 ERROR [internal] load metadata for docker.io/library/php:7.4-apache_=> error [internal] load metadata for registry.cn–CSDN博客
- Docker官方2024.6停服后可用国内镜像地址更新 - Z科技 - 博客园 (cnblogs.com)
- 将Maven的Docker镜像修改为国内源_docker mvn 换源-CSDN博客
- 在dockerfile中把maven的下载源更换为阿里的镜像仓库 - 简书 (jianshu.com)