SpringBoot打包不同环境配置以及Shell脚本部署的方法
在实际的应用中,我们需要针对不同的环境(如开发、测试、生产)进行配置,同时我们也需要使用Shell脚本一键部署以简化部署操作。
下面就以一个基础的Spring Boot应用为例,介绍一下如何实现不同环境配置以及Shell脚本部署。
1.不同环境配置
1.1 环境配置文件
首先,在resources目录下创建不同环境的配置文件,如application-dev.yml、application-test.yml和application-prod.yml。在这些配置文件中,我们可以将相同的配置项进行抽离并放入application.yml中,然后在不同的配置文件中进行覆盖即可。
示例如下:
application.yml
server:
port: 8080
logging:
level:
root: info
application-dev.yml
spring:
profiles:
active: dev
logging:
level:
root: debug
application-test.yml
spring:
profiles:
active: test
logging:
level:
root: info
application-prod.yml
spring:
profiles:
active: prod
logging:
level:
root: error
1.2 读取环境变量
在应用启动时,Spring Boot会根据application-{profile}.yml的格式读取配置文件,并根据spring.profiles.active属性的值加载不同的配置。
因此,在启动应用时,我们需要设置spring.profiles.active参数,示例代码如下:
java -jar app.jar --spring.profiles.active=dev
这样,在运行时,Spring Boot会主动查找激活的配置文件application-dev.yml,并覆盖application.yml中的配置。
2.Shell脚本部署
2.1 编写脚本
在项目根目录下,创建deploy.sh脚本文件,用于实现自动化部署。
示例代码如下:
#!/bin/bash
# 定义相关参数
APP_NAME="myapp"
JVM_OPTS="-Xmx1024m -Xms512m"
JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom"
# 打包程序
mvn clean package -DskipTests
# 停止应用
PID=$(ps ax | grep ${APP_NAME} | grep java | grep -v grep | awk '{print $1}')
if [ -n "$PID" ]; then
echo "Stoping ${APP_NAME} ..."
kill -9 $PID
fi
# 启动应用
nohup java -jar ${APP_NAME}.jar ${JVM_OPTS} ${JAVA_OPTS} > /dev/null 2>&1 &
echo "Deploy ${APP_NAME} successfully."
该脚本文件中,首先定义了一些参数,如应用程序名、JVM参数、Java参数等。
然后执行了mvn clean package -DskipTests,对应用程序进行打包。接着根据APP_NAME查找应用进程,如果存在,则先停止进程。最后使用启动jar包的命令来重启应用程序。
2.2 调用脚本
运行deploy.sh脚本文件时,需要给与可执行权限,如下命令:
chmod +x deploy.sh
然后,执行deploy.sh,即可完成自动化部署。
./deploy.sh
3.总结
通过以上的步骤,我们实现了基于Spring Boot实现不同环境配置以及shell脚本部署的方法。这些方法可以使我们开发、测试、生产不同阶段的部署变得更加简单高效。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot打包不同环境配置以及shell脚本部署的方法 - Python技术站