如何制作和使用Maven的Docker镜像

本文指导如何基于GitLabRunner镜像构建包含Maven的Docker镜像,演示如何启动容器并手动打包项目,以实现GitLabCI的项目打包阶段管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当使用GitLab CI的流水线功能时,可能需要新增项目打包的阶段,此时就要用到Maven或Gradle进行打包。本文将介绍如何以GitLab Runner的镜像为基础,构建集成Maven功能的Docker镜像,然后再简单介绍如何启动和使用Maven容器。

一、环境描述

1. 虚拟机配置

  • CPU:单核
  • 内存:2 GB
  • 硬盘:120 GB
  • IP:192.168.190.128

2. 操作系统

  • 版本:CentOS 7.4 x86_64 (1708)
  • 安装方式:Minimal

3. Docker

4. GitLab服务器

5. GitLab Runner

二、构建镜像

1. 创建Dockerfile文件

 

在shell中运行以下命令:

 
  1. cd /root/Downloads
  2. vi Dockerfile

Dockerfile的内容,如下所示:

 
  1. # 使用自建的GitLab Runner镜像
  2. FROM registry.cn-hangzhou.aliyuncs.com/ghoulich-centos/gitlab-runner:10.5.0
  3.  
  4. # 镜像维护者
  5. MAINTAINER ghoulich@aliyun.com
  6.  
  7. # 安装wget
  8. RUN yum install -y wget
  9.  
  10. # 安装Maven
  11. RUN wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
  12. RUN yum -y install apache-maven
  13.  
  14. # 清理系统
  15. RUN yum clean all

每个构建步骤的用途,都在注释中有所说明,本文不再赘述。

2. 构建镜像

在shell中运行以下命令:

 
  1. docker build -t gitlab-maven-runner:3.5.2 .

构建完成之后,查看新建Docker镜像的信息,如下图所示:

查看Maven镜像的状态

3. 上传镜像

本文将Docker镜像交给阿里云托管,在shell中运行以下命令,上传镜像:

 
  1. # 登录阿里云镜像库
  2. docker login --username=ghoulich@aliyun.com registry.cn-hangzhou.aliyuncs.com
  3. # 为本地镜像创建标签
  4. docker tag gitlab-maven-runner:3.5.2 registry.cn-hangzhou.aliyuncs.com/ghoulich-centos/gitlab-maven-runner:3.5.2
  5. # 推送镜像
  6. docker push registry.cn-hangzhou.aliyuncs.com/ghoulich-centos/gitlab-maven-runner:3.5.2

请根据实际情况,修改上述命令中的用户名和仓库名。

三、启动package-runner容器

在shell中运行以下命令,启动一个专用于打包的容器:

 
  1. mkdir -p /usr/local/gitlab-runner/data
  2. mkdir -p /usr/local/gitlab-runner/config/package
  3. docker run --detach \
  4. --name package-runner \
  5. --hostname package-runner \
  6. --restart always \
  7. --volume /usr/local/gitlab-runner/config/package:/etc/gitlab-runner \
  8. --volume /usr/local/gitlab-runner/data:/home/gitlab-runner \
  9. --env JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64 \
  10. registry.cn-hangzhou.aliyuncs.com/ghoulich-centos/gitlab-maven-runner:3.5.2

上述命令将容器的名称设置为package-runner,将容器的配置文件目录/etc/gitlab-runner挂载至宿主机的/usr/local/gitlab-runner/config/package目录,将容器的数据目录/home/gitlab-runner挂载至宿主机的/usr/local/gitlab-runner/dat目录。

四、注册Runner实例

GitLab Runner容器启动之后,必须去GitLab服务器进行注册,然后才能在流水线中使用。注册过程,如下图所示:

注册Package Runner

注册Runner需要填写以下信息:

  • GitLab服务器的URL,本文设置为http://10.15.1.248/
  • GitLab的注册令牌,通常能在GitLab的项目管理页面或系统配置页面找到,本文设置为pDXW_tssA5NHa5K4zSY-
  • 待注册Runner的描述,本文设置为package-runner
  • 待注册Runner的标签,可以设置多个标签(以逗号分割),本文设置为maven
  • 是否运行未打标签的构建任务,本文设置为false
  • 是否将待注册的Runner锁定至当前项目,本文设置为false
  • 执行器的类型,本文设置为shell

请根据实际情况填写上述注册信息。如果注册成功,那么可以在GitLab服务器的Runner配置页面中看到刚刚注册的GitLab Runner,如下图所示:

查看Package Runner的注册状态

五、手动打包项目

接下来,本文尝试利用package-runner容器手动打包maven项目,检查该容器是否能够正常工作。假设GitLab服务器上有一个名为demo的项目,通过git工具拉取代码:

 
  1. docker exec -it package-runner git clone http://10.15.1.248/yangbin/demo.git /home/gitlab-runner/demo

在shell中运行以下命令,手动打包demo项目:

 
  1. docker exec -it package-runner mvn clean package -DskipTests -f /home/gitlab-runner/demo

经过漫长的等待,打包完成之后,运行得到的jar包,检查是否打包成功:

 
  1. # 启动demo项目
  2. docker exec --detach package-runner java -jar /home/gitlab-runner/demo/target/demo-0.0.1-SNAPSHOT.jar
  3. # 访问示例服务
  4. docker exec -it package-runner curl http://127.0.0.1:8080/hello

若上述最后一条命令的输出如下图所示,则表示打包成功:

验证Maven容器的打包功能

至此,Maven的Docker镜像已经制作完成了,本文还启动了一个简单的Maven容器,通过一个示例,简单地演示了拉取源码和打包的功能!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值