返回
Featured image of post Docker部署SpringBoot的jar

Docker部署SpringBoot的jar

1. SpringBoot通过Maven打包成jar 部署到Docker

一、Maven执行打包命令

通常SpringBoot项目会使用 spring-boot-maven-plugin 插件 来打包项目

<build>
    	<!-- Jar包的名称 -->
        <finalName>FeiGangBao</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <!-- 指定该Main Class为全局的唯一入口 -->
                    <mainClass>com.lizihao.FeiGangBaoApplication</mainClass>
                    <layout>ZIP</layout>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <!--可以把依赖的包都打包到生成的Jar包中-->
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

mvn package
mvn package

二、把打包的 Jar文件上传到 Centos服务器上

步骤 略

三、创建 dockerFile 文件

  1. 先使用 vim 命令 创建 dockerfile
vim dockerfile

#dockerfile内容:
FROM java:8
MAINTAINER lizihao <lizihao_email@163.com>
ADD FeiGangBao.jar /root/app.jar
CMD java -jar /root/app.jar

四、通过docker build 命令构建 docker镜像

#    构建命令    文件位置       镜像名称:版本号 上下文.代表当前上下文
docker build -f dockerfile -t fgb:1.3 .
#使用docker images命令查看镜像
docker images

docker_images
docker_images

五、启动刚刚创建的 docker 镜像

#--参数说明--
# -id:在后台运行、-it:直接运行可以查看运行情况,退出就停止容器
# -p:指定映射端口 宿主机端口:docker容器端口
# --name:指定容器名称
docker run -it -p 9109:9109 --name=fgb_provider1.3 fgb:1.3

2. 将lib 和 jar包分开的方式部署

Why? 因为通过 spring-boot-maven-plugin 插件 来打包项目默认会将项目中的所有用到的依赖打包到 jar中,导致jar文件太大 每次部署传输慢 所以下面我们采用lib 和 jar 分开部署的方式

一、使用分开打包方式 打包 maven项目

  1. 首先回到上面的打包位置,将下面的xml添加到 节点中
<includes>
      <include>
          <!-- 排除所有Jar -->
          <groupId>nothing</groupId>
          <artifactId>nothing</artifactId>
       </include>
</includes>

pom.xml
pom.xml

  1. 重新使用 package 打包成 jar

  2. 将 lib 文件和 jar文件 上传到 服务器

  3. 使用 vim 命令修改dockerfile文件

    修改 通过 -Dloader.path="/root/lib/" 参数 指定java运行程序时从/root/lib/路径下找依赖的jar包

    FROM java:8
    MAINTAINER lizihao <lizihao_email@163.com>
    ADD FeiGangBao.jar /root/app.jar
    CMD java -Dloader.path="/root/lib/" -jar /root/app.jar
    
  1. 通过dockerfile文件 构建镜像文件 不变

    #    构建命令    文件位置       镜像名称:版本号 上下文.代表当前上下文
    docker build -f dockerfile -t fgb:1.3 .
    #使用docker images命令查看镜像
    docker images
    
  1. 通过docker镜像 运行容器

    #--参数说明--
    # -id:在后台运行、-it:直接运行可以查看运行情况,退出就停止容器
    # -p:指定映射端口 宿主机端口:docker容器端口
    # -v:挂载数据卷 宿主机的文件路径:docker容器内的文件路径
    # --name:指定容器名称
    docker run -id -p 9109:9109 -v /root/web_app/fgb/lib:/root/lib/ --name=fgb_provider1.3 fgb:1.3
    

    docker_run
    docker_run

Built with Hugo
Theme Stack designed by Jimmy