在线构建 docker 镜像
# 前言
本文主要介绍:
如何使用 Jpom 中的在线构建来实现构建 docker 镜像的流程
需要使用到的功能有:
- 仓库管理
- 在线构建 -> 本地构建:将仓库代码打包出运行文件
- docker 管理
- 在线构建发布到 docker 镜像
注意:本文采用一键安装同时基于 2.9.18 版本讲解,系统为 centos
# 需要准备的环境
- Jpom 服务端(已经安装好、并且配置好了 maven 环境)
- 一个 Java 项目仓库 并且已经有
DockerFile
文件
本文就不再从零开始讲解安装教程,如果有不知道该如何安装的可以查看相关文档
本文使用物理机直接安装 Jpom 服务端的方式
案例仓库地址:https://gitee.com/keepbx/Jpom-demo-case/ (opens new window) -> springboot-test-jar (opens new window)
# 操作指南
# 配置 docker 到 Jpom
这个步骤主要是在 Jpom 添加 docker 服务,这样可以使用 Jpom 来管理 docker
详细操作步骤:操作文档>> (本文默认您已经配置好了)
这里我们为 docker 添加一个标签值为:test
(注意这个值后续会用到)
如果服务端所在服务器中存在 docker 建议使用
自动探测
方式来添加
本文因为服务端所在的服务器存在 docker,所以 docker 地址为:
unix:///var/run/docker.sock
# 配置项目仓库
仓库目录截图
# 配置在线构建
仓库构建命令:mvn clean package -DskipTests
您需要根据的项目来确定打包命令
仓库产物目录:springboot-test-jar/target/springboot-test-jar-0.0.1-SNAPSHOT.jar
您需要根据的项目来确定产物目录(不了解产物目录该怎么填写的可以查看:说明文档)
执行容器:这里填写在 Jpom 添加 docker 的标签值 ,我们前面为 docker 添加的标签值为 test
,这里我们填它即可
执行容器指使用哪个 docker 构建,填写 docker 标签( 标签在 docker 编辑页面配置) 默认查询可用的第一个,如果 tag 查询出多个将依次构建
镜像 tag:jpom-test:1.0
容器标签,如:xxxx:latest 多个使用逗号隔开
这里根据你您的项目情况来填写您需要的镜像标签名,注意这里支持使用仓库目录下的变量文件替换变量来实现动态标签名(tag 名)
在 2.9.19+ 版本 需要手动配置
附加环境变量
来实现加载仓库目录下 .env 文件环境变量
使用变量替换示例:xxxx:${VERSION},添加
附加环境变量
.env 文件 后,如果 .env 文件存在 VERSION=1.2 那么替换后为:xxxx:1.2
Dockerfile:这里添加的 springboot-test-jar:springboot-test-jar/Dockerfile
指使用哪个仓库里面的哪个 Dockerfile 文件来执行构建操作,如果多文件夹查看可以指定二级目录如果 springboot-test-jar:springboot-test-jar/Dockerfile
如果您的 Dockerfile 在仓库根路径,直接填写对应的文件名即可。这里支持二级目录的作用主要是用于指定到二级目录里面执行构建,因为部分 Dockerfile 里面
ADD
COPY
指令是相对路径的情况
版本递增
开启 dockerTag 版本递增后将在每次构建时自动将版本号最后一位数字同步为构建序号ID
如:当前构建为第 100 次构建
testtag:1.0 -> testtag:1.100
testtag:1.0.release -> testtag:1.100.release
如果没有匹配到数字将忽略递增操作
# 执行构建
这里可以看到我们的镜像标签最终转换为:jpom-test:1.1
# 管理镜像
到这里我们可以看到我们构建出现的镜像了,接下来就是我们将这个镜像运行起来
# 通过镜像创建容器
至此我们就可以通过 Jpom 来实现构建镜像,通过镜像创建容器并且可以查看容器日志了
# 附件
DockerFile
FROM openjdk:8
ENV WORK_PATH=/home/jpom-test/
ENV RUN_LOG=/home/jpom-test-log/
ENV JAR_NAME=springboot-test-jar-0.0.1-SNAPSHOT.jar
ENV CODE_DIR=${WORK_PATH}
WORKDIR ${WORK_PATH}
#ADD ./target/ .
ADD ./target ${WORK_PATH}
ADD ./script/run.sh ${WORK_PATH}/run.sh
EXPOSE 8084
#ENTRYPOINT [ "java","-Djava.security.egd=file:/dev/./urandom", "-jar","/${jarName}"]
ENTRYPOINT ["/bin/bash", "/home/jpom-test/run.sh"]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22