一、修改自动化工程的pom.xml文件
如下:
这里的plugin插件:docker-maven-plugin是一个maven打包镜像的插件,可以实现自动化的编译项目、打包项目、构建镜像、上传到docker镜像私服(这里我们用的是aliyun)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.itheima.sh</groupId>
<artifactId>docker_demo</artifactId>
<version>1.0</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.5.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
</dependencies>
<build>
<finalName>app</finalName>
<plugins>
<!-- 打jar包时如果不配置该插件,打出来的jar包没有清单文件 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- 插件网址:https://github.com/spotify/docker-maven-plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.0</version>
<configuration>
<!--这里registry.cn-hangzhou.aliyuncs.com/hmcxy/是自己的阿里云仓库地址-->
<imageName>registry.cn-hangzhou.aliyuncs.com/hmcxy/${project.artifactId}:${project.version}</imageName>
<baseImage>java:8-alpine </baseImage>
<entryPoint>["java","-jar","/${project.build.finalName}.jar"]</entryPoint>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<serverId>ali-docker</serverId>
<registryUrl>registry.cn-hangzhou.aliyuncs.com</registryUrl>
<!--这里192.168.150.105是自己的虚拟机地址-->
<dockerHost>http://192.168.150.105:2375</dockerHost>
</configuration>
</plugin>
</plugins>
</build>
</project>
docker-maven-plugin插件的configuration标签中需要修改的地方有两处:
a:是自己阿里云私服仓库地址,参考:阿里云私服仓库
b:<dockerHost>中的ip地址为自己的虚拟机地址(自动化运行的服务器ip)
然后,将项目上传到码云(gitee.com)中,地址:https://gitee.com/luuulian/docker_demo.git,并获取到地址
二、创建jenkins任务
1.新建任务–》定义任务名名称–》勾选构建模板 保存任务
2.配置构建信息
在弹出的构建页面中,包含9项需要填写的构建内容:
分别是:
- general:项目描述信息✔
- 源码管理:项目关联的Git地址,将来回到指定的Git地址拉取代码✔
- 构建触发器:触发项目构建的事件配置,这里无需配置✘
- 构建环境:构建时的环境设置,这里无需配置✘
- Pre Steps:构建前可以执行的任务,暂时无需配置✘
- Build:maven构建的pom文件、构建命令✔
- Post Steps:构建后可以执行的任务,一般是shell命令,暂时无需配置 ✘
- 构建设置:构建后是否发送邮件?暂时无需配置✘
- 构建后操作:构建后的镜像做归档存储,暂时无需配置✘
1)General基本信息
添加描述。
2)源码设置
3)Build(构建任务)
- Root POM: 本次构建要使用的git仓库中的pom文件
- Goals and options: 要执行的mvn命令 不用写前面的mvn
# maven命令
clean package -DskipTests docker:build -DpushImage
# 依次:
# 清除 打包 跳过单元测试 远程构建镜像 上传镜像到注册中心
简单配置后直接保存,后续的其他配置可自己再按需求进行配置
- 执行maven构建任务
1)执行构建任务
当我们保存完毕任务之后,会进入到任务的详情页面, 点击立即构建即可执行该构建任务
2)进入任务中的控制台可查看构建详情,构建成功
还可去阿里云私服查看镜像,已经上传代表成功
4.常见错误
这是因为忘了开启docker的远程控制功能。
解决:
修改虚拟机中的docker配置,让其可以远程访问
vi /lib/systemd/system/docker.service
其中ExecStart=后添加配置:
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
结果如下:
刷新配置,重启服务:
# 刷新配置
systemctl daemon-reload
# 重启docker
systemctl restart docker