springboot jar以及docker镜像太大问题解决方案

    每次更换jar包,只需要更替几百k即可,无需把依赖包加进去

    docker镜像过大
        1、了解spring boot打包,期望将依赖的libs 和 业务代码拆分
        2、优化dockerfile,充分利用缓存

以下只解决了依赖的libs 和 业务代码拆分,优化dockerfile后续补充


    1、pom文件添加如下:
    
                
           
           
                org.apache.maven.plugins
                maven-dependency-plugin
               
                   
                        copy-dependencies
                        package
                       
                            copy-dependencies
                       

                       
                           
                            ${project.build.directory}/lib
                            false
                            false
                            runtime
                       

                   

               

           

           
           
                org.springframework.boot
                spring-boot-maven-plugin
               
                    ZIP
                   
                       
                            nothing
                            nothing
                       

                   

               

           

           
    

idea 中clean -->package 后, 项目目录中会多个target目录,里面多个lib目录,

springboot jar以及docker镜像太大问题解决方案_第1张图片

 

docker部署:

如果是第一次使用docker,需先创建镜像参考:

        CSDNicon-default.png?t=M7J4https://mp.csdn.net/mp_blog/creation/editor/126367264

把idea生成的lib、xxx.jar和配置文件application.yml、bootstrop.yml放入XXXApp目录下,后面   ADD ./XXXApp/* /home/XXX/XXXApp/会加入到容器中,

若已经使用docker部署过,无需在操作创建镜像。但也需要知道创建镜像后各个文件及其功能,不然后面列出的文件不清楚什么情况。

直接在docker-compose.yml中新增一条挂载(物理机和容器的映射关系)

   volumes:
      - "/home/docker/volumes/xxx_data/_data/lib/:/home/XXX/XXXApp/lib/"

把idea生成的lib中的jar放入/home/docker/volumes/xxx_data/_data/lib中,

xxx.jar和配置文件application.yml、bootstrop.yml放入/home/docker/volumes/xxx_data/_data/中

然后在启动脚本startup.sh中加上对lib的依赖命令:

java -Dloader.path=lib/ -jar xxx.jar

查看容器id:docker ps -a 

 

根据容器id,启动docker:

        docker restart g46546fg434g     或者 

        docker stop g46546fg434g     docker start g46546fg434g     

启动后,进入容器中 :docker exec -it g46546fg434g    /bin/bash

若进入容器失败,例如报

Error response from daemon: Container 630ebe592507cf829058848019a1580d4ab81f6b58ace40c3454562becd95918 is restarting, wait until the container is running

解决方法思路:

        查看docker 日志:
        docker logs g46546fg434g     

        根据报错原因,解决问题

你可能感兴趣的:(servlet,java,maven)