前言
在springboot开发部署jar包时,可能需要配置大量的运行时环境,比如数据库,jdk等。这时你可能会想到docker部署服务,但假如甲方就是想【一键启动】服务,什么都不用配置就可以用,应该怎么办呢?
本篇文章就是记录自己编写bat(或.sh)脚本快速的实现springboot的启动,完全独立的部署启动环境。
环境准备
版本
| 名称 | 版本 | 说明 |
|---|---|---|
| jre | 1.8 | java运行时 |
| postgres | 15 | 数据库 |
这里需要用到postgres数据库(当然也可以是mysql),jre1.8(也可以是其它版本,根据实际开发时用的jdk版本选择)。
注意:这里使用的是资源文件,不使用安装包,是直接调用资源文件内的exe文件实现数据库配置和jar包运行。
代码步骤
初始化并启动数据库
将postgres数据库资源文件放到一个文件夹内(这里是pgsql文件夹),将要用到的初始化sql文件也放到该文件夹内(这里放在sql文件夹)。

使用bat脚本(同一目录)进行数据库初始化,脚本如下:
@echo off
setlocal
set pg_home=.\pgsql
set db_name= fire_qixia
set db_pwd= 12345
set db_port= 5433
set sql_file= .\sql\pgsql.sql
echo [1/4] 正在初始化 postgresql...
if not exist "%pg_home%\data\pg_version" (
echo 正在初始化 postgresql 数据库...
"%pg_home%\bin\initdb.exe" -d "%pg_home%\data" -u postgres -e utf8 --locale=c -w
if errorlevel 1 (
echo 数据库初始化失败!
exit /b 1
)
echo 数据库初始化成功!
)
echo [2/4] 正在启动 postgresql...
start "" "%pg_home%\bin\pg_ctl.exe" -d "%pg_home%\data" -l "%pg_home%\pg.log" start -o "-p %db_port%"
rem 等待几秒确保服务启动
ping -n 10 127.0.0.1 >nul
rem ==== 3. 创建数据库 ====
echo [3/4] 正在创建数据库 "%db_name%" ...
"%pg_home%\bin\createdb.exe" -u postgres -p %db_port% %db_name%
if errorlevel 1 (
echo 数据库可能已存在,继续...
)
rem ==== 4. 导入 sql 文件 ====
if exist "%sql_file%" (
echo [4/4] 正在导入 sql 文件 "%sql_file%" ...
"%pg_home%\bin\psql.exe" -u postgres -p %db_port% -d %db_name% -f "%sql_file%"
if errorlevel 1 (
echo sql 导入失败!
exit /b 1
)
echo sql 导入成功!
) else (
echo 未找到 sql 文件:%sql_file%
)
endlocal这里分别使用了pgsql/bin路径下的exe文件进行数据库的初始化,启动,创建和sql导入操作(不同的数据库,使用的.exe程序不同)
启动jar包服务
如法炮制,将jre1.8的资源文件和springboot打包完成的jar包程序同样复制到相同文件夹,使用下面的bat脚本启动:
@echo off setlocal set java_home=.\jdk set spring_app=.\打包的程序.jar echo 启动 spring boot 应用... "%java_home%\bin\java.exe" -jar "%spring_app%" endlocal
部署时只需要将所有文件一起复制到部署的机器上(windows系统),双击我们自定义的bat脚本即可部署运行程序了。
示例目录
.
├── config_db.bat -----初始化并启动数据库的脚本
├── ext-config.yml -----额外的配置
├── jdk ---jre运行环境
├── pgsql --- 数据库资源文件
├── 程序.jar ---打包的程序jar包
├── sql --- sql文件
├── start_db.bat ---启动数据库脚本
├── start_service.bat ---启动服务脚本
疑问解答
如果我的 服务有些额外的配置需要如何快速修改呢?
可以在启动springboot应用时在启动命令后添加
--spring.config.location=classpath:application.yml,file:./ext-config.yml
这个命令行进行自定义的配置覆盖,这时我们需要在相同的文件夹下新建一个ext-config.yml进行自定义。(和springboot内的yml配置一样)
我不想每次都初始化后启动数据库?
可以在文件夹内单独新建一个启动的bat文件,用于启动数据库服务,当然也可以创建一个停止服务的bat文件,用于停止。
示例代码:
@echo off setlocal set pg_home=.\pgsql set db_port=5433 echo 正在启动 postgresql... start "" "%pg_home%\bin\pg_ctl.exe" -d "%pg_home%\data" -l "%pg_home%\pg.log" start -o "-p %db_port%" rem 等待几秒确保服务启动 ping -n 10 127.0.0.1 >nul endlocal
总结
通过如上的操作配置,可以实现一个可以快速配置和启动的服务,即使是没有任何技术基础的也可以进行服务的配置和启动,当然如果你有更好的解决方案,欢迎在评论区留言!
到此这篇关于springboot使用bat脚本启动服务的代码步骤的文章就介绍到这了,更多相关springboot bat脚本启动服务内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论