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进行打包
可以在控制台看到打包成功:
方式2
打开IDEA自带的终端面板,找到项目的pom文件目录
输入指令:mvn clean package
拷贝需要的文件至服务器
步骤1:
我们在上面打包的jar包和配置文件,都可以通过控制台看到,我们找到具体目录
在这个包中,可以看到我们打包的jar文件,但是这个jar文件是没有配置文件和html网页以及静态资源,如:css,js等文件的
我们需要在这个文件中,找到刚才打包出来的yml配置文件以及静态的html网页(PS:在target目录的上一级目录,就能找到src目录了,在定位到src/main/resources中去)
步骤2:
我们拷贝templates文件以及application.yml文件至target目录中,并且创建一个config文件,将yml文件放置到里面去,templates直接放在target目录即可;
步骤3:
** 这3个文件:config,templates,jar文件,就是我们需要拷贝至服务器的文件了,我这里使用的是finalShell工具,直接拖拽进去的,大家可以使用其他手段上传至服务器,我这里是虚拟机,所以就直接拖拽了。**
使用docker进行构建后台项目
编写dockerfile
这里我将我自己编写的dockerfile贴出来,供大家参考,很简单的一个dockerfile
FROM centos
MAINTAINER zq<aaa@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哈哈~~
完结…(待续???)…
上一篇: flume拦截器