您的位置:首页 > 运维架构 > Docker

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

2020-06-02 04:38 1031 查看

目录

  • 拷贝需要的文件至服务器
  • 使用docker进行构建后台项目
  • 测试
  • 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<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哈哈~~

    完结…(待续???)…

    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: 
    相关文章推荐