springboot打包项目,配置文件分离,使用dockerfile部署,启动成功,测试通过
目录
spirngboot使用maven插件进行打包
在项目pom文件中,添加以下依赖:
<build> //打包时,/src/main/resources中的文件分离出来 <resources> <resource> <directory>src/main/resources</directory> <excludes> <exclude>**/*.properties</exclude> <exclude>**/*.yml</exclude> </excludes> </resource> </resources> //maven打包插件 <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
在项目主入口Application中,加入以下代码(不加会出现无法找到主入口)
@SpringBootApplication //开启redis存储session支持 @EnableRedisHttpSession public class IotMqttServerApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(IotMqttServerApplication.class,args); } //为了打包springboot项目 @Override protected SpringApplicationBuilder configure( SpringApplicationBuilder builder) { return builder.sources(this.getClass()); } }
使用IDEA进行打包
方式1:
在右侧找到clean,先点击clean清理,然后点击package进行打包
可以在控制台看到打包成功:
打开IDEA自带的终端面板,找到项目的pom文件目录
输入指令:mvn clean package
拷贝需要的文件至服务器
步骤1: 我们在上面打包的jar包和配置文件,都可以通过控制台看到,我们找到具体目录
在这个包中,可以看到我们打包的jar文件,但是这个jar文件是没有配置文件和html网页以及静态资源,如:css,js等文件的
我们需要在这个文件中,找到刚才打包出来的yml配置文件以及静态的html网页(PS:在target目录的上一级目录,就能找到src目录了,在定位到src/main/resources中去)
我们拷贝templates文件以及application.yml文件至target目录中,并且创建一个config文件,将yml文件放置到里面去,templates直接放在target目录即可;
步骤3:
** 这3个文件:config,templates,jar文件,就是我们需要拷贝至服务器的文件了,我这里使用的是finalShell工具,直接拖拽进去的,大家可以使用其他手段上传至服务器,我这里是虚拟机,所以就直接拖拽了。**
使用docker进行构建后台项目
编写dockerfile
这里我将我自己编写的dockerfile贴出来,供大家参考,很简单的一个dockerfile
FROM centos MAINTAINER zq<458890719@qq.com> LABEL name="iot-web-dockerfile image" \ build-data="202004025" #将项目打包的jar包,配置文件和 JDK包导入 #这个是server版本的JDK8,这个需要的直接去网上下载 ADD server-jre-8u151-linux-x64.tar.gz /home/ #这个是我的项目打包的jar文件 ADD iot-web-2.0-SNAPSHOT.jar /home/ #项目配置文件(这是一个文件夹) COPY config /home/ #项目静态资源文件(这是一个文件夹) COPY templates /home/ #设置工作空间 ENV WORKPATH /home/ WORKDIR $WORKPATH #环境变量配置 ENV JAVA_HOME /home/jdk1.8.0_151 ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar ENV PATH $PATH:$JAVA_HOME/bin #暴露端口 EXPOSE 6062 #执行启动项目指令 CMD java -jar /home/iot-web-2.0-SNAPSHOT.jar
将dockerfile以及项目的文件拷贝至服务器(服务器内的文件夹需要自己创建)
使用终端连接工具,通过ssh进行连接服务器或者虚拟机(我这里是centos7.5的虚拟机)
使用cd命令,定位到放置dockerfile的文件夹(我将dokcerfile,配置文件,jar包,项目jar文件,html都放在这个目录中)
使用docker命令,进行构建docker镜像
docker build -f iot-web2.0-dockerfile -t iot-web:1.0 .
构建成功后,可以使用命令
docker images中找到自己构建的镜像
创建容器/启动容器,并挂载容器目录
使用命令如下:
docker run -it -p 6062:6062 --name iot-web2323 -v /home/iot-web/config/:/home/config/ -v /home/iot-web/templates/:/home/templates 4528995a1eef
这里解释一下这条指令:
使用我们刚才构建的镜像进行创建容器,(4528995a1eef 这个是我刚才使用dockerfile创建的镜像ID),
-
-it的意思是进入到容器的伪终端; -p 6062:6062 意思是容器的6062端口与服务器的6062端口映射,这样就能通过访问服务器的6062端口,访问到项目的6062端口了;
-
–name iot-web2323 这个是我为这个容器的命名为iot-web2323;
-
-v /home/iot-web/config/:/home/config/ 这个是将服务器的/home/iot-web/config目录与容器的/home/config/目录进行挂载,挂载后,我们通过修改服务器下面的/home/iot-web/config文件里的application.yml文件,容器内部的文件也会变化(动态修改配置文件,修改后记得重启容器)
-
-v /home/iot-web/templates/:/home/templates 这个也是挂载目录,这个挂载的是html,js,css等静态文件
执行命令后,容器终端输出:
证明项目启动成功!
测试
浏览器访问测试主页
首先,通过浏览器去访问服务器的index,看一下templates下的html文件是否有生效
通过浏览器访问,出现了index.html的内容…(o(╥﹏╥)o,没错,我的主页就是只有8888四个数字,没有js,也没有css…)
PostMan访问,测试API
明显看出,使用POST请求,是成功访问了测试的API的,结果是可以的O(∩_∩)O哈哈~~
完结…(待续???)…
- SpringBoot系列三:SpringBoot基本概念(统一父 pom 管理、SpringBoot 代码测试、启动注解分析、配置访问路径、使用内置对象、项目打包发布)
- 如何使用Docker部署一个web项目并打包成镜像文件
- 详解如何使用Docker部署一个web项目并打包成镜像文件
- 九,docker 使用Dockerfile 部署springboot项目与配置挂载
- iOS开发:给项目工程里面添加Podfile配置文件,以及CocoaPods的简单使用
- maven 使用-P指定环境打包,linux移动配置文件失败,windows成功!
- 使用Ant构建web项目 从编译到测试 生成测试报告 打包 邮件发送 远程下载tomcat 部署运行一条龙服务之ant脚本
- Springboot中如何引入本地jar包,并通过maven把项目成功打包成jar包部署
- 使用eclipse在tomcat下部署项目不覆盖配置文件server.xml
- maven使用assembly插件打包,剥离配置文件,加入可执行的脚本用来启动应用
- 使用Advanced Installer 13.7进行AutoCAD2012(2014)插件打包 一(配置文件部署)
- docker 部署springboot项目,解决容器启动成功但是浏览器访问不成功的问题
- IDEA通过DockerFile部署Springboot项目到服务器
- as通过gradle实现多渠道打包+使用配置文件进行版本管理+指定apk输出路径和apk文件名
- 通过maven管理项目的生产、开发和测试环境的配置文件
- Java opencsv--使用 Spring 的 PostConstruct机制,项目启动时,将CSV配置文件读取到内存 map 中
- 使用idea将maven项目打包war文件部署到tomcat
- log4j无日志生成? 我将一个web项目部署在tomcat server.xml配置文件中,当我启动tomcat是无日志输出。
- 服务器使用Tomcat配置server.xml文件通过域名直接跳转到项目
- eclipse通过maven建立java se工程配置log4j,打包成zip,将jar包和配置文件分开,并以bat和sh文件启动java程序