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>
二、把打包的 Jar文件上传到 Centos服务器上
步骤 略
三、创建 dockerFile 文件
- 先使用 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 镜像
#--参数说明-- # -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项目
- 首先回到上面的打包位置,将下面的xml添加到 节点中
<includes> <include> <!-- 排除所有Jar --> <groupId>nothing</groupId> <artifactId>nothing</artifactId> </include> </includes>
重新使用 package 打包成 jar
将 lib 文件和 jar文件 上传到 服务器
使用 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
通过dockerfile文件 构建镜像文件 不变
# 构建命令 文件位置 镜像名称:版本号 上下文.代表当前上下文 docker build -f dockerfile -t fgb:1.3 . #使用docker images命令查看镜像 docker images
通过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