docker部署持续集成环境

部署准备 jenkins服务器 10.1.2.183 docker服务器 10.1.2.184 Git/Harbor服务器 10.1.2.182 各服务版本 CentOS 7.4_x64 Maven 3.5 Tomcat 8 JDK 1.8 Jenkins 2.6 DockerCE 17.06 在Git服务器 1、安装Git

yum install git

2、创建Git用户

useradd git

passwd git

3、创建仓库

su – git

mkdir solo.git

cd /home/git/solo.git

git --bare init

在git服务器和jenkins服务器分别安装docker服务添加国内镜像源并分别在两台的/etc/docker/daemon.json里面添加对harbor主机的信任,如下 {"registry-mirrors": [ "https://registry.docker-cn.com"], "insecure-registries": ["10.1.2.182"]} 在jenkins服务器 安装git,使用git的客户端 yum install git 安装openjdk1.8 tar zxvf jdk-8u45-linux-x64.tar.gz && mv jdk1.8.0_45 /usr/local/ 下载git服务器上的空项目在本地建立一个空白示例仓库 git clone 10.1.2.182:/home/git/solo.git #在本地建立一个空白仓库 下载github上的示例项目 git clone https://github.com/lizhenliang/tomcat-java-demo 将下载的示例项目解压,将内容拷贝到空白仓库并且提交到本地git仓库 unzip solo-master.zip && cp -r solo-master/* solo/ && git add . && git commit -m "all" #在这边就是模拟将代码拉取下来,修改,再上传到git服务器 将soho项目提到的远程git服务器 git push origin master 在jekins服务器 使用dockerfile安装jenkins,dockerfile文件如下 mkdir /root/jenkins;cd /root/jenkins; cat Dockerfile FROM jenkins USER root RUN echo 'Acquire::Check-Valid-Until no;' > /etc/apt/apt.conf.d/99no-check-valid-until RUN apt-get clean RUN echo '' > /etc/apt/sources.list
&& echo 'deb http://security.debian.org/ jessie/updates main >>/etc/apt/sources.list
&& echo 'deb-src http://security.debian.org/ jessie/updates main >>/etc/apt/sources.list
&& echo 'deb http://archive.debian.org/debian/ jessie-backports non-free >>/etc/apt/sources.list
&& echo 'deb-src http://archive.debian.org/debian/ jessie-backports non-free >>/etc/apt/sources.list
&& echo 'deb http://archive.debian.org/debian/ jessie main contrib non-free >>/etc/apt/sources.list
&& echo 'deb-src http://archive.debian.org/debian/ jessie main contrib non-free >>/etc/apt/sources.list RUN apt-get update && apt-get install -y git libltdl-dev

构建jenkins镜像 docker build -t jenkins:v1 启动jenkins docker run -d
--name jenkins
-p 8080:8080
-v /var/jenkins_home/:/var/jenkins_home
-v /usr/local/apache-maven-3.5.0:/usr/local/maven
-v /usr/local/jdk1.8.0_45:/usr/local/jdk
-v /var/run/docker.sock:/var/run/docker.sock
-v $(which docker):/usr/bin/docker
-v ~/.ssh:/root/.ssh
jenkins:v1 配置docker这台和jenkins这台分别配置对harbor这台的免登陆配置用于git间的推拉 ssh-keygen ssh-copy-id 10.1.2.182 访问10.1.2.183:8080进行jenkins安装 配置jenkins 修改jenkins国内升级源 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/current/update-center.json 系统管理--全局工具配置 配置jdk,maven,git

在jenkins上配置对docker主机的密钥登陆 ssh-copy-id 10.1.2.184 在jenkins页面凭据管理添加凭据

将jenkins主机上的/root/.ssh/id_rsa文件内容复制到Private Key里面

添加远程主机 系统管理--系统设置

选择前面添加的ROOT用户

部署项目 新建一个maven项目

配置Git,凭据不需要选,因为jenkins服务器已经配置好对git服务器的免交互

PS:上图中如果git账号不能使用,就使用root账号 构建选项

构建一下测试看maven有没有完成 下面我们将构建完的包打包成镜像,上传到harbor仓库 在jenkins上 构建tomcat基础镜像,以后以这个基础镜像为基础构建项目 mkdir /root/solo cat Dockerfile FROM centos:7 MAINTAINER www.aliangedu.com

RUN yum install unzip iproute -y

ENV JAVA_HOME /usr/local/jdk

ADD apache-tomcat-8.0.46.tar.gz /usr/local RUN mv /usr/local/apache-tomcat-8.0.46 /usr/local/tomcat

WORKDIR /usr/local/tomcat EXPOSE 8080 ENTRYPOINT ["./bin/catalina.sh", "run"] 构建 docker build -t 10.1.2.182/test/tomcat:v1 . #这里构建的时候直接打标记等下直接推送到仓库. 推送 在harbor创建test项目,设置项目的成员chench权限为项目管理员或开发权限,否则会无法push docker push 10.1.2.182/test/tomcat:v1 选择构建完执行脚本,在脚本里里面使用Dockfile构建镜像,然后将镜像上传到GIt仓库

选择ssh到远程主机执行shell脚本 从Git仓库拉取镜像到docker服务器并运行

浏览器访问docker主机ip:8888查看是否启动成功