docker maven 打包jar_Springboot2.0学习11 使用maven插件打包docker部署应用

一、本文目标

  • 使用Maven插件构建SpringBoot应用的docker镜像
  • 镜像推送至Docker Registry
  • 启动容器

本文开发环境 :

  • jdk1.8
  • maven
  • idea
  • SpringBoot2.2
  • 本文使用 com.spotify 的 docker-maven-plugin插件执行docker命令。据说官方不再推荐使用该插件,而是使用 dockerfile-maven-plugin 代替。
  • 本文需要提前搭建docker registry,并且设置允许 http 推送。

二、实现步骤

1. 创建SpringBoot项目

项目结构:

e08198e63ba743ad675efd39daf2add3.png

入口程序 HelloApplication

HelloController控制器

pom.xml设置打包插件

<?xml version="1.0" encoding="UTF-8"?>4.0.0com.xundh.springboot    docker    1.0-SNAPSHOTUTF-81.81.8UTF-81.8org.springframework.boot        spring-boot-starter-parent        2.2.2.RELEASEorg.springframework.boot            spring-boot-starter-web            2.2.2.RELEASEhellosrc/main/resourcestrueorg.springframework.boot                spring-boot-maven-plugin            

2. 打包并运行项目

访问网址: http://localhost:8080/hello
看到界面输出: hello world

3. 添加docker支持

在resources下新建Dockerfile,输入内容:

FROM java:8MAINTAINER "xundh"<2581529@qq.com>ADD hello.jar app.jarEXPOSE 8080CMD java -jar app.jar

这里,使用:

  • jdk1.8
  • add指令将hello.jar复制到docker容器中,重命名为app.jar
  • 开启8080端口
  • 使用命令行 java -jar app.jar运行程序

4. 使用maven插件构建docker镜像

插件配置说明:

  • imageName: 镜像的完整名称
  • dockerDirectory: 用于指定Dockerfile文件所在的目录
  • resources.resource.directory: 用于指定需要复制的根目录
  • resources.resource.include: 用于指定需要复制的文件
  • ${docker.registry} 注册中心地址
  • ${project.groupId} 仓库名称
  • ${project.artifactId} 镜像名称
  • ${project.version} 镜像标签名
  • ${project.build.directory} 表示target目录
  • ${project.build.finalName}.jar 生成的jar包

5. 构建镜像

mvn docker:build# 查看镜像 sudo docker images
a187767a39c4d04750b2bdb452a2b447.png
  • 这里构建镜像,是直接使用服务器上的docker打包,所以打包以后使用docker images就可以直接看到镜像。下一步推送可以不需要操作。
  • 打包出来的包比较大,因为java image本身就有6百多兆,加上自己的应用就不会少于600多兆。
  • 使用openjdk可以缩小体积。

6. 镜像推送到Docker Registry

mvn docker:push

7. 到服务器运行镜像

sudo docker run -d -p 80:8080 9512b0da843d

访问网址:
http://服务器ip/hello
可以看到打印 hello world字样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值