Java开发者必看!手把手带你搞定Jenkins+Maven仓库+Docker 仓库+部署+自动更新pom版本 一条龙部署服务
1. 写在开头
为了调通这长长的一串花费了整整4天时间。。。写完后将之前写的API都采取了这样的方式进行部署,极大程度的压缩了需要我部署的时间,还是非常值得的。
比起上次写的 使用Jenkins对springboot项目进行docker镜像一键部署,jenkins + docker + springboot 集成了更多的内容,也更加动态化。
1.1 实现的功能
- 一次构建,可以完成如下所有操作
checkout code → build jar package → push package to nexus → build docker image → push image to repositories → deploy → update pom.xml version

当中没有接入Sonarqube或者墨菲安全之类的stage是因为我把这个部份做到了code一提交时触发的GitHub Actions中。
废话不多说,马上开始教程。
2. 搭建过程
2.1 准备内容
搭建环境:
- 一个简单的Spring Boot项目,使用Java17,我已经准备好了这个,建议先clone到本地:https://github.com/MingGH/demo-springboot-simple
- 阿里云账号(推送nexus和docker image)
- 一台已经安装了docker的电脑或者服务器,如果服务器安装docker有难度,可以参考这篇博客:使用官方安装脚本自动安装
2.2 通过Docker安装Jenkins
创建一个目录,用来存在Jenkins的数据
mkdir -p /dockerData/jenkins/jenkins-data
进入到/dockerData/jenkins 目录,我们在这创建Dockerfile
cd /dockerData/jenkins
vim Dockerfile
复制以下内容到文件Dockerfile 中
FROM jenkins/jenkins:2.375.1
USER root
RUN apt-get update && apt-get install -y lsb-release
RUN curl -fsSLo /usr/share/keyrings/docker-archive-keyring.asc \
https://download.docker.com/linux/debian/gpg
RUN echo "deb [arch=$(dpkg --print-architecture) \
signed-by=/usr/share/keyrings/docker-archive-keyring.asc] \
https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list
RUN apt-get update && apt-get install -y docker-ce-cli
USER jenkins
RUN jenkins-plugin-cli --plugins "blueocean:1.26.0 docker-workflow:563.vd5d2e5c4007f"
从Dockerfile中构建镜像
docker build -t myjenkins-blueocean:2.375.1-1 .
构建完成之后,使用docker images可以看到刚刚构建的镜像。
运行一个Jenkins容器
docker run \
-u root \
--name jenkins \
--restart=on-failure \
--detach \
--publish 8080:8080 \
--publish 50000:50000 \
--volume /etc/localtime:/etc/localtime \
--volume /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker \
--volume /dockerData/jenkins/jenkins-data:/var/jenkins_home \
myjenkins-blueocean:2.375.1-1
对当中的一些参数进行解释:
-u root容器中的进程以root