前言
为实现快速搭建和开发,项目以Springboot框架搭建,springboot搭建的项目可以将项目直接打成jar包并运行,无需自己安装配置Tomcat或者其他服务器,是一种方便快捷的部署方式。
假设项目以最常规的方式打包成一个整体的jar包部署,即配置文件包含在jar包里,就会出现一个问题:项目运行过程中,要改动配置文件的话需要重新打包并部署。
如果将项目的配置文件提取到jar包外统一管理,这样只改动了配置文件重启下服务就可以了,无需重新构建部署。
实现原理
根据yml配置文件加载原理,所有配置文件都会加载,高优先级的配置会覆盖低优先级的内容,且属性互补
Springboot配置文件加载优先级:
- 项目启动时通过命令的方式指定项目加载核心配置文件
- Jar包外同级目录的config目录
- Jar包外同级目录
- jar包内classPath(即resources目录)的config目录
- jar包内的classpath目录
一、Liunx部署jar包并外置配置文件
1.将jar包和外部配置文件上传到服务器某个路径下
2.在/home/nanshan
目录下使用java -jar nandemo-0.0.1-SNAPSHOT.jar &
命令启动jar包
执行过程中用到的命令:
-
netstat -nlp |grep :8080
查看某端口占用的线程的pid -
kill -9 21322
关闭进程,21322表示上一步查到的进程号
二、Docker部署jar包并外置配置文件
1.将jar包和外部配置文件上传到服务器某个路径下
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 .
命令创建镜像
4.使用 docker run -d --name nandemo -p 8080:8080 nandemo:latest
启动容器
选项 | 选项简写 | 说明 |
–detach | -d | 在后台运行容器,并且打印容器id |
–interactive | -i | 即使没有连接,也要保持标准输入保持打开状态,一般与 -t 连用 |
-tty | -t | 分配一个伪tty,一般与 -i 连用 |
5.测试
以下分别为配置文件中参数,接口内容和访问结果。