一、项目部署到Docker
1.1 项目部署流程
第一步:将项目上传到服务器上;
第二步:创建Docker镜像;
第三步:创建容器;
第四步:启动容器;
1.2 配置插件
第一步:配置spring-boot-maven-plugin打包插件。
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
第二步:配置docker-maven-plugin插件。
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<!--docker镜像相关的配置信息-->
<configuration>
<!--镜像名,这里用工程名-->
<imageName>${project.artifactId}-${project.version}</imageName>
<!--Dockerfile文件所在目录-->
<dockerDirectory>${project.basedir}/src/main/resources</dockerDirectory>
<!--TAG,这里用工程版本号-->
<imageTags>
<imageTag>${project.version}</imageTag>
</imageTags>
<imageName>${project.artifactId}:${project.version}</imageName>
<!--构建镜像的配置信息-->
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.artifactId}-${project.version}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
1.3 编写Dockerfile
在项目src/main/resources目录下新建Dockerfile文件,文件内容如下:
FROM java:8
ENV ARTIFACTID xc-govern-center
ENV ARTIFACTVERSION 1.0-SNAPSHOT
ENV HOME_PATH /home
WORKDIR $HOME_PATH
ADD /$ARTIFACTID-$ARTIFACTVERSION.jar $HOME_PATH/$ARTIFACTID.jar
ENTRYPOINT ["java", "-jar", "xc-govern-center.jar"]
1.4 创建镜像
将项目拷贝到服务器上后,就可以进入项目的根目录,执行以下命令。
mvn -f pom_docker.xml clean package -DskipTests docker:build
创建镜像成功后,可以通过镜像部署一个应用实例进行测试。
docker run --name 容器名称 -p 50101:50101 -idt 192.168.31.20:5000/镜像名称:镜像版本
注意:服务器上也要预先安装jdk、maven、docker工具。
二、创建持续集成任务
2.1 创建构建任务
在Jenkins主页的左侧点击“新建任务”,然后在输入框中输入任务名称。
2.2 配置Git
2.2.1 配置Git凭证
Git凭证用于从远程Gitlab中克隆代码。
在Jenkins主页左侧“凭据”下点击“系统”。
点击左侧“添加凭据”,然后录入gitlab仓库的用户名和密码,并点击保存按钮即可。
2.2.2 配置Git仓库
点击我的任务,进入任务配置页面。在源码管理栏目中配置Git仓库。
2.3 Maven构建配置
- 使用shell脚本停止容器、删除容器、删除镜像。
命令如下:
#!/bin/bash
result=$(docker ps | grep "192.168.31.20:5000/ts-govern-center")
if [[ "$result" != "" ]]
then
echo "stop ts-govern-center"
docker stop ts-govern-center
fi
result1=$(docker ps -a | grep "192.168.31.20:5000/ts-govern-center")
if [[ "$result1" != "" ]]
then
echo "rm ts-govern-center"
docker rm ts-govern-center
fi
result2=$(docker images | grep "192.168.31.20:5000/ts-govern-center")
if [[ "$result2" != "" ]]
then
echo "192.168.31.20:5000/ts-govern-center:1.0-SNAPSHOT"
docker rmi 192.168.31.20:5000/ts-govern-center:1.0-SNAPSHOT
fi
- 执行maven构建。
命令如下:
clean package -f ts-govern-center/pom_docker_registry.xml -DskipTests docker:build
3.拉取镜像、创建容器、启动容器。
命令如下:
docker run --name xc-govern-center -p 50101:50101 -idt 192.168.31.20:5000/ts-govern-center:1.0-SNAPSHOT
docker logs -f ts-govern-center
2.4 执行任务
进入任务页面,点击“立即构建”。
查看构建日志信息:
2.5 自动构建
2.5.1 添加公钥
Jenkins远程访问GitLab获取源代码,这里需要在GitLab配置公钥。
第一步:进入jenkins容器,生成公钥。
ssh-keygen -t rsa -C "[email protected]"
cat ~/.ssh/id_rsa.pub
第二步:将公钥文件的内容拷贝出来。
第三步:进入GitLab配置公钥。
2.5.2 配置webhook
GitLab中使用webhook向jenkins通知,当有代码push后将通知jenkins进行构建。
第一步:安装gitlab插件。
第二步:进入Jenkins设置允许匿名访问jenkins。
在“系统管理”中选择“系统配置”,进入系统配置页面。然后找到gitlab部分,将复选框取消勾选即可。
第三步:在Jenkins中找到通知地址,并拷贝该地址。
第四步:使用管理员登录jenkins,设置允许请求本地网络服务。
在主页上选择Configure GitLab。
选择“Settings”中的“Network”,然后展开Outbound requests,将第一个复选框选中即可。
第五步:设置钩子地址。通过钩子地址,jenkins就可以访问gitlab中的项目。
- 重新使用普通用户登录gitlab。然后进入项目主页。
- 选择“Settings”中的“Webhooks”,然后输入URL地址,即钩子地址。
2.5.3 测试
测试步骤:
- 修改项目代码;
- 提交代码到gitlab上;
- 在jenkins中查看任务是否启动;