Jenkins与Docker的自动化CI/CD实战(二)

一、发布流程设计

 

操作流程:

开发push代码到github,触发jenkins自动pull代码,通过maven编译打包,执行shell脚本使docker构建镜像并push到私人服务器仓库,此操作完成后jenkins服务器再执行SSH命令登录到部署服务器,docker从仓库拉取镜像,启动容器。

二、服务器软件环境配置

角色 IP
Jenkins 192.168.253.156
Docker/Registry 192.168.253.158

三、jenkins配置

3.1 安装插件

Docker plugin

docker-build-step

SSH plugin ---用于ssh远程Docker主机执行shell命令

3.2 添加ssh远程主机

添加访问的凭据:

 系统管理--系统配置

 3.3 开启Docker Remote API

在192.168.253.158上执行:

ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375 --containerd=/run/containerd/containerd.sock

重新加载配置文件

systemctl daemon-reload 
systemctl restart docker

关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

3.4 docker配置

 

四、部署私有镜像仓库

Docker Hub作为Docker默认官方公共镜像;如果想自己搭建私有镜像仓库,官方也提供registry镜像,使得搭建私有仓库非常简单。
在192.168.253.158部署:

docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry

为了更快的获取镜像,这里使用了阿里云的镜像加速器。
由于Docker CLI客户端默认以HTTPS访问,而部署的registry并未提供HTTPS,因此,需要在pull镜像的Docker主机,添加HTTP可信任: 

[root@localhost ~]# cat /etc/docker/daemon.json
{
 "registry-mirrors": ["https://sopn42m9.mirror.aliyuncs.com"],
 "insecure-registries":["192.168.253.158:5000"]
}

五、构建tomcat基础镜像

编写dockerfile

[root@localhost ~]# cat Dockerfile
FROM centos:7
MAINTAINER www.aliangedu.com

ENV VERSION=8.5.56
ENV JAVA_HOME /usr/local/jdk

RUN yum install wget -y

RUN wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.56/bin/apache-tomcat-8.5.56.tar.gz && 
    tar zxf apache-tomcat-${VERSION}.tar.gz && 
    mv apache-tomcat-${VERSION} /usr/local/tomcat && 
    rm -rf apache-tomcat-${VERSION}.tar.gz /usr/local/tomcat/webapps/*

EXPOSE 8080
CMD ["catalina.sh", "run"]

构建镜像并push到192.168.253.158仓库:

docker build -t 192.168.253.158:5000/tomcat-8.5 .
docker push  192.168.253.158:5000/tomcat-8.5

六、新建任务

配置出门左拐参照 https://www.cnblogs.com/lanist/p/13158085.html

在Jenkins本机服务器构建镜像并推送到镜像仓库,并SSH远程连接到Docker主机(这里可以新增一台单独的服务器来拉取仓库中的镜像)

在之前构建的镜像上拷贝打包好REPOSITORY=192.168.253.158:5000/zpzc

# 构建镜像
cat > Dockerfile << EOF
FROM 192.168.253.158:5000/tomcat-8.5:latest
RUN rm -rf /usr/local/tomcat/webapps/*.war
COPY target/*.war /usr/local/tomcat/webapps
CMD ["/usr/local/tomcat/bin/catalina.sh", "run"]
EOF
docker build -t $REPOSITORY . # 上传镜像 docker push $REPOSITORY

镜像构建完成后, 使用ssh远程登录部署服务器(192.168.253.158)上删除已经存在的容器和拉取的部署镜像,重新部署新的容器。

SSH远程Docker主机执行的Shell命令如下:

 REPOSITORY=192.168.253.158:5000/zpzc
 docker rm -f zpzc
 docker rmi $REPOSITORY
 docker run -d --name zpzc  -p 28888:8080 -v /usr/local/jdk:/usr/local/jdk $REPOSITORY

注意,此处需要在部署服务器上安装jdk环境,挂载jdk目录到容器中,因为tomcat镜像文件

[root@localhost ~]# whereis java
java: /usr/local/jdk/bin/java /usr/local/jdk/jre/bin/java

 七、构建任务

控制台输出:

 

八、测试

在docker服务器上查看镜像

查看容器:

访问页面:

 

 问题:解析不了css文件,正在解决。。。

原文地址:https://www.cnblogs.com/lanist/p/13213867.html