springboot打包不同环境配置以及shell脚本部署的方法

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技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Kafka中消息队列的两种模式讲解

    Kafka中消息队列的两种模式讲解 Apache Kafka是一个开源的分布式流处理平台,其主要功能是异步处理、发布和订阅消息。在Kafka中,消息队列的模式分为两种:点对点模式和发布/订阅模式。 点对点模式 点对点模式通常用于一个消息只能被一个消费者消费的场景,即一条消息只会被消费一次。这种模式中,消息被发送到Kafka中的一个队列中,在队列中等待消费者来…

    Java 2023年5月20日
    00
  • springmvc利用jquery.form插件异步上传文件示例

    针对你的问题,我可以提供以下完整攻略,希望能够帮助你。 一、简介 在web应用中,文件上传功能是比较常见的。而在Spring MVC框架中,文件上传则可以通过SpringMVC提供的MultipartHttpServletRequest类来完成,但是这种方式需要整个页面提交才能上传文件,速度比较慢,因此在前端使用异步上传文件功能可以大幅提升用户体验。而jqu…

    Java 2023年5月31日
    00
  • java使用Dijkstra算法实现单源最短路径

    Java使用Dijkstra算法实现单源最短路径攻略 算法简介 Dijkstra算法是一种经典的计算图的单源最短路径的算法。它的基本思想是从起始点开始,首先确定该点到其他所有点的最短距离,然后以最短距离作为中介点,依次直到所有点的最短路径都被确定。Dijkstra算法主要应用在网络路由、航空等行业中。 算法步骤 将图中节点分为两个集合:已确定路径的节点集合和…

    Java 2023年5月19日
    00
  • Java简单实现定时器

    一、Java简单实现定时器 1. 实现原理 Java实现定时器的原理是通过Java语言自带的Timer和TimerTask类来完成的。Timer类可以让我们在一定的时间间隔内执行任务,而TimerTask则是具体要执行的任务。 2. 使用方法 2.1 创建定时器 Timer timer = new Timer(); 2.2 创建任务 class Task e…

    Java 2023年5月18日
    00
  • Java基于jdbc连接mysql数据库操作示例

    下面是Java基于JDBC连接MySQL数据库操作的完整攻略,包含两条示例。 步骤一:准备工作 在开始Java程序连接MySQL数据库之前,需要完成以下几个准备工作: 安装MySQL数据库并创建需要操作的数据库和表 下载并安装Java JDK 下载并安装MySQL Connector/J驱动程序 步骤二:创建数据库连接 请按照以下步骤创建数据库连接: 加载M…

    Java 2023年5月19日
    00
  • JSP中表达式的使用详解

    《JSP中表达式的使用详解》攻略 一、JSP表达式的介绍 JSP表达式一般用于将变量、常量、函数等的值输出到页面上。 语法格式: <%= 表达式 %> 其中,等号和百分号之间不要有空格。 二、表达式中可使用的内容 变量和常量 在表达式中可以使用变量或常量的值,如: <%= name %> <%= 1234 %> 表达式运算…

    Java 2023年6月15日
    00
  • 如何基于js及java分析并封装排序算法

    当前前端开发中,排序算法是比较基础的内容,经常会在算法学习和面试中出现。本文将介绍如何基于js及java分析并封装排序算法,为学习和使用排序算法提供帮助。 1. 排序算法介绍 在计算机科学中,排序算法是一种将一串数据按照指定的顺序进行排列的方法。常见的排序算法包括冒泡排序、选择排序、插入排序、希尔排序、快速排序、归并排序等等。 2. 分析与封装 要实现排序算…

    Java 2023年5月19日
    00
  • JSP简介

    JSP 简介 JSP(Java Server Pages)是一种动态的网页技术,它可以让开发人员将 Java 代码嵌入到 HTML 页面中。JSP 页面首先被翻译成 Java 代码,然后编译成 Servlet 类,最后将 Servlet 类加载到 Web 服务器中。当 Web 客户端请求 JSP 页面时,Web 服务器会处理该请求并返回 Servlet 的执…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部