欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

springboot打包项目,配置文件分离,使用dockerfile部署,启动成功,测试通过

程序员文章站 2022-06-13 20:56:07
...

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:

springboot打包项目,配置文件分离,使用dockerfile部署,启动成功,测试通过

在右侧找到clean,先点击clean清理,然后点击package进行打包

可以在控制台看到打包成功:
springboot打包项目,配置文件分离,使用dockerfile部署,启动成功,测试通过

方式2

打开IDEA自带的终端面板,找到项目的pom文件目录

springboot打包项目,配置文件分离,使用dockerfile部署,启动成功,测试通过
输入指令:mvn clean package
springboot打包项目,配置文件分离,使用dockerfile部署,启动成功,测试通过
springboot打包项目,配置文件分离,使用dockerfile部署,启动成功,测试通过

拷贝需要的文件至服务器

步骤1:

   我们在上面打包的jar包和配置文件,都可以通过控制台看到,我们找到具体目录
springboot打包项目,配置文件分离,使用dockerfile部署,启动成功,测试通过
   在这个包中,可以看到我们打包的jar文件,但是这个jar文件是没有配置文件和html网页以及静态资源,如:css,js等文件的springboot打包项目,配置文件分离,使用dockerfile部署,启动成功,测试通过
   我们需要在这个文件中,找到刚才打包出来的yml配置文件以及静态的html网页(PS:在target目录的上一级目录,就能找到src目录了,在定位到src/main/resources中去)
springboot打包项目,配置文件分离,使用dockerfile部署,启动成功,测试通过

步骤2:

   我们拷贝templates文件以及application.yml文件至target目录中,并且创建一个config文件,将yml文件放置到里面去,templates直接放在target目录即可;

springboot打包项目,配置文件分离,使用dockerfile部署,启动成功,测试通过

步骤3:
**	这3个文件:config,templates,jar文件,就是我们需要拷贝至服务器的文件了,我这里使用的是finalShell工具,直接拖拽进去的,大家可以使用其他手段上传至服务器,我这里是虚拟机,所以就直接拖拽了。**

springboot打包项目,配置文件分离,使用dockerfile部署,启动成功,测试通过

使用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都放在这个目录中)
springboot打包项目,配置文件分离,使用dockerfile部署,启动成功,测试通过
springboot打包项目,配置文件分离,使用dockerfile部署,启动成功,测试通过

使用docker命令,进行构建docker镜像
docker build -f iot-web2.0-dockerfile  -t iot-web:1.0 .

   构建成功后,可以使用命令docker images中找到自己构建的镜像
springboot打包项目,配置文件分离,使用dockerfile部署,启动成功,测试通过

创建容器/启动容器,并挂载容器目录

使用命令如下:

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等静态文件

    执行命令后,容器终端输出:
    springboot打包项目,配置文件分离,使用dockerfile部署,启动成功,测试通过
    证明项目启动成功!

测试

浏览器访问测试主页

首先,通过浏览器去访问服务器的index,看一下templates下的html文件是否有生效
springboot打包项目,配置文件分离,使用dockerfile部署,启动成功,测试通过
通过浏览器访问,出现了index.html的内容…(o(╥﹏╥)o,没错,我的主页就是只有8888四个数字,没有js,也没有css…)

PostMan访问,测试API

springboot打包项目,配置文件分离,使用dockerfile部署,启动成功,测试通过
明显看出,使用POST请求,是成功访问了测试的API的,结果是可以的O(∩_∩)O哈哈~~

完结…(待续???)…