小暖男石头哥|微服务架构中将SpringBoot项目打包Docker镜像
目前主流的互联网公司采用的架构设计应该都比较超前 , 微服务 , 容器和云原生等基础架构应该都有采用和进行二次开发 。 在微服务架构设计中 , 项目发布时需要将项目打包成容器镜像 , 这一步是最基本的操作 。
下面我们介绍下 , 如何将SpringBoot项目打包成docker容器镜像 , 通过笔记的形式记录下来方便以后查阅 。 将SpringBoot项目打包成Docker容器镜像主要分为两部分:
- 添加Maven插件
- 定义Dockerfile
添加Maven插件在maven的pom.xml中添加我们需要的插件 , 这里我们采用dockerfile-maven-plugin , 当然也可以选择其他的插件 , 不同的插件的使用方法可能不太一样
com.spotify dockerfile-maven-plugin default build push ${docker.repostory}/${project.artifactId} ${project.version}target/${project.build.finalName}.jar
dockerfile-maven-plugin插件主要使用了两个goal:- build是指构建Docker容器镜像;
- push是将构建的Docker容器镜像推送到公有或者私有镜像仓库中;
- repository定义一个公有或者私有的镜像仓库;
- tag是Docker镜像的版本号;
- buildArgs是向Dockerfile传递参数 , 该节点下面的子节点标签可以自定义 , 因为该节点标签的数据类型是Map;
- JAR_FILE是自定义标签 , 定义了Maven打包后jar文件的位置 , 该参数会在Dockerfile中用到;
定义Dockerfile接下来我们就需要定义Dockerfile了 。 那么 , Dockerfile是什么呢?
Dockerfile 是一个用来构建镜像的文本文件 , 文本内容包含了一条条构建镜像所需的指令和说明 。
Dockerfile常用的指令有如下几种:
COPY
复制指令 , 从上下文目录中复制文件或者目录到容器里指定路径 。 格式:
COPY [--chown=:] <源路径1>...<目标路径>COPY [--chown=:] ["<源路径1>",..."<目标路径>"]
[--chown=<源路径>:源文件或者源目录 , 这里可以是通配符表达式 , 其通配符规则要满足 Go 的 filepath.Match 规则 。 例如:
COPY hom* /mydir/COPY hom?.txt /mydir/
<目标路径>:容器内的指定路径 , 该路径不用事先建好 , 路径不存在的话 , 会自动创建 。ADD
ADD 指令和 COPY 的使用格式一致(同样需求下 , 官方推荐使用 COPY) 。 功能也类似 , 不同之处如下:
- ADD 的优点:在执行 <源文件> 为 tar 压缩文件的话 , 压缩格式为 gzip, bzip2 以及 xz 的情况下 , 会自动复制并解压到
推荐阅读
- 智通财经|| 远洋服务向港交所递表 在管面积约4230万平方米,新股消息
- 【】淄博这家税务局主动服务 助一湖北籍纳税人退税近40万
- 央视新闻客户端|田间地头到跨境物流,China服务安排上了
- 第一财经|住建部:房地产经纪机构应对住房租赁服务项目实行明码标价
- 央视网|直通服贸会 | 加强“一带一路”服贸合作 促进服务转型升级
- 央视网|带你逛服贸 | 文化服务专题展 规模大、颜值高、创意多
- 9月7日|远洋集团拟分拆远洋服务赴港上市 持股份额将不低于五成
- 物业|远洋集团拟分拆远洋服务赴港上市 持股份额将不低于五成
- 服务|快看 | 58同城特别股东大会通过私有化协议,获75%得票比例
- 央视新闻|第三届“一带一路”服务贸易合作论坛举行