zoukankan      html  css  js  c++  java
  • 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文件,正在解决。。。

  • 相关阅读:
    completable 用法
    spring 纯注解方式 与AOP
    springIOC原理加载过程
    多线程手写Future模式
    springMVC 实现redis分布式锁
    java线程池学习
    本地跑 spark ui 报错
    九度oj 题目1452:搬寝室
    九度oj 题目1456:胜利大逃亡
    九度oj 题目1455:珍惜现在,感恩生活
  • 原文地址:https://www.cnblogs.com/lanist/p/13213867.html
Copyright © 2011-2022 走看看