1.首先安装Docker
Docker可以运行MAC、Windows、Centos、DEBIAN、UBUNTU等操作系统上,提供社区版和企业版,我们这次使用Centos安装Docker。Centos6对docker支持的不好,使用docker建议升级到centos7。
1.1、直接通过yum安装即可:
yum install -y docker
启动docker:
service docker start
查询docker版本:
docker version
1.2在Centos6上安装Docker
rpm -ivh http://dl.Fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install -y docker-io
service docker start
在这里咱们docker就安装完毕了,如果有没有了解过docker知识的小伙伴建议先去学习一下docker的相关知识。
2.安装Jenkins
本次我们在Dokcer下安装Jenkins:
拉去镜像:
docker pull jenkinsci/blueocean
然后创建容器:
docker create --name jenkins -u root -p 8889:8080 --privileged=true -v jenkinsdata:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v /usr/local/apache-maven-3.5.4:/var/local/apache-maven-3.5.4 -v /usr/local/java/jdk1.8.0_221:/var/local/jdk1.8.0_221 -v /home/jenkins:/home docker.io/jenkinsci/blueocean
这里我们将8080端口映射到宿主机的8889端口,然后记住需要挂载目录(由于后续部署的时候需要Maven+JDK环境所以将宿主机安装的Maven+JDK目录挂载进Docker)
查看docker 容器
docker ps -a
然后启动容器
docker start jenkins
然后访问jenkins
ip(自己宿主机ip):8889
初次运行Jenkins会经过一个安装过程,一般情况使用默认配置,下一步安装即可,其中一步需要输入密码,如下图
docker exec ‐it jenkins /bin/bash 这个命令是进入容器的命令
cat /var/jenkins_home/secrets/initialadminPassword
接下来点击默认Jenkins安装的插件进入,然后设置一个登录账户就进入jenkins主界面了
接下来需要配置一些插件
2.1安装插件SSH plugin
SSH remote hosts是Jenkins提供的一种远程访问ssh服务器的方法,通过如下步骤测试此功能
从可选插件中选择SSH Plugin进行安装
接下来配置凭证(也就是你需要远程访问宿主机的账户密码)
2.2安装插件Maven插件
2.3 Jenkins全局工具配置
本项目使用Jenkins需要配置Jdk1.8、Git、maven。
2.4 配置SSH sites
配置远程ssh服务器的ip和端口
2.5 搭建docker私有仓库
docker run ‐‐name docker‐registry ‐d ‐p 5000:5000 registry
上边显示 registry镜像已经创建,并且docker-registry容器已经启动成功。
访问:http://192.168.101.64:5000/v2/_catalog
由于我们需要将镜像Push到私有仓库需要开启远程访问
此处分享这篇文章
https://www.jianshu.com/p/1057a874b9dd
vim /usr/lib/systemd/system/docker.service
/usr/bin/dockerd-current -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock \
将上面的代码插入其中
docker重新读取配置文件,重启docker服务
systemctl daemon-reload
systemctl restart docker
3.SpringBoot编写相关构建文件(需将构建文件上次至Gitee)
接下来就是编写Dockerfile文件、和pom_docker_registry.xml插件文件
FROM java:8
VOLUME /tmp
ADD liandong-eureka-1.0-SNAPSHOT.jar liandong-eureka.jar
RUN bash -c 'touch /liandong-eureka.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/liandong-eureka.jar"]
这个Dockerfile 文件可以根据自己项目的实际情况来进行编写
<?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">
<parent>
<artifactId>liandong-parent</artifactId>
<groupId>com.liandong</groupId>
<version>1.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>liandong-eureka</artifactId>
<dependencies>
<!-- 导入Eureka服务的依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}-${project.version}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<!--docker镜像相关的配置信息-->
<configuration>
<!--镜像名,这里用工程名-->
<imageName>${project.artifactId}</imageName>
<!--Dockerfile文件所在目录-->
<dockerDirectory>${project.basedir}/src/main/resources</dockerDirectory>
<!--TAG,这里用工程版本号-->
<imageTags>
<imageTag>${project.version}</imageTag>
</imageTags>
<registryUrl>47.98.199.60:5000</registryUrl>
<!--<dockerHost>47.98.199.60:2375</dockerHost>-->
<pushImage>true</pushImage>
<imageName>47.98.199.60:5000/${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>
</plugins>
</build>
</project>
以上是我的pom_docker_registry.xml文件 各位可以根据自己的项目依葫芦画瓢
4.创建持续集成任务
4.1 构建自由风格的项目
4.2 配置git仓库
4.3 构建命令
这里我将我的脚本文件贴出来大家可以参考
#!/bin/bash
result=$(docker ps | grep "47.98.199.60:5000/liandong-eureka")
if [[ "$result" != "" ]]
then
echo "liandong-eureka"
docker liandong-eureka
fi
result1=$(docker ps -a | grep "47.98.199.60:5000/liandong-eureka")
if [[ "$result1" != "" ]]
then
echo "rm liandong-eureka"
docker rm liandong-eureka
fi
result2=$(docker images | grep "47.98.199.60:5000/liandong-eureka")
if [[ "$result2" != "" ]]
then
echo "47.98.199.60:5000/liandong-eureka:1.0-SNAPSHOT"
docker rmi 47.98.199.60:5000/liandong-eureka:1.0-SNAPSHOT
fi
clean package -f liandong-eureka/pom_docker_registry.xml -DskipTests docker:build
docker run --name liandong-eureka -p 50101:50101 -idt 47.98.199.60:5000/liandong-eureka:1.0-SNAPSHOT
docker logs -f liandong-eureka
整体的一个构建步骤:
构建前先删除docker中已经存在的镜像和同期---->然后用Maven打包推到私有仓库----->然后启动容器
5.接来就直接开始构建
5.1
构建成功
写的不好请大家见谅,有不对的地方请大家及时指出