前言

为实现快速搭建和开发,项目以Springboot框架搭建,springboot搭建的项目可以将项目直接打成jar包并运行,无需自己安装配置Tomcat或者其他服务器,是一种方便快捷的部署方式。

假设项目以最常规的方式打包成一个整体的jar包部署,即配置文件包含在jar包里,就会出现一个问题:项目运行过程中,要改动配置文件的话需要重新打包并部署。

如果将项目的配置文件提取到jar包外统一管理,这样只改动了配置文件重启下服务就可以了,无需重新构建部署。

实现原理

根据yml配置文件加载原理,所有配置文件都会加载,高优先级的配置会覆盖低优先级的内容,且属性互补

Springboot配置文件加载优先级:

  1. 项目启动时通过命令的方式指定项目加载核心配置文件
  2. Jar包外同级目录的config目录
  3. Jar包外同级目录
  4. jar包内classPath(即resources目录)的config目录
  5. jar包内的classpath目录

一、Liunx部署jar包并外置配置文件

1.将jar包和外部配置文件上传到服务器某个路径下

linux zhong java指定配置文件启动 linux启动jar包指定配置文件_配置文件

2.在/home/nanshan目录下使用java -jar nandemo-0.0.1-SNAPSHOT.jar &命令启动jar包

linux zhong java指定配置文件启动 linux启动jar包指定配置文件_jar包_02


执行过程中用到的命令:

  • netstat -nlp |grep :8080 查看某端口占用的线程的pid
  • kill -9 21322 关闭进程,21322表示上一步查到的进程号

linux zhong java指定配置文件启动 linux启动jar包指定配置文件_linux_03

二、Docker部署jar包并外置配置文件

1.将jar包和外部配置文件上传到服务器某个路径下

linux zhong java指定配置文件启动 linux启动jar包指定配置文件_配置文件_04

2.在该目录下创建Dockerfile文件

# 拉取一个jdk为1.8的docker镜像
FROM openjdk:8-jdk
# 将项目jar包作为app.jar添加到容器
ADD nandemo-0.0.1-SNAPSHOT.jar app.jar
# 将外部配置文件复制到容器
COPY ./config /home/nandemo/config
# ENTRYPOINT 执行项目 app.jar及外部配置文件,多个配置文件逗号隔开
ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=dev", "app.jar","--spring.config.location=/home/nandemo/config/application.yml,/home/nandemo/config/application-dev.yml"]

3. 在/home/nandemo目录下使用 docker build -t xxxxxx . 命令创建镜像

linux zhong java指定配置文件启动 linux启动jar包指定配置文件_jar包_05

4.使用 docker run -d --name nandemo -p 8080:8080 nandemo:latest启动容器

linux zhong java指定配置文件启动 linux启动jar包指定配置文件_配置文件_06

选项

选项简写

说明

–detach

-d

在后台运行容器,并且打印容器id

–interactive

-i

即使没有连接,也要保持标准输入保持打开状态,一般与 -t 连用

-tty

-t

分配一个伪tty,一般与 -i 连用

5.测试

以下分别为配置文件中参数,接口内容和访问结果。

linux zhong java指定配置文件启动 linux启动jar包指定配置文件_配置文件_07


linux zhong java指定配置文件启动 linux启动jar包指定配置文件_配置文件_08


linux zhong java指定配置文件启动 linux启动jar包指定配置文件_linux_09