美文网首页
项目持续部署文档

项目持续部署文档

作者: 鸡龙 | 来源:发表于2020-09-11 00:08 被阅读0次

    部署方式

    部署架构

    使用docker简化原有的宿主机手动安装jdk,tomcat,mysql的部署。

    项目使用Jenkins来持续部署,提供了docker直接部署和docker-compose来管理docker部署两种方式

    默认使用docker-compose来部署,若想直接使用docker来部署,请将Jenkinsfile与Jenkinsfile2替换后push后生效

    下方生成文件列表都是经过package生成的文件由maven根据pom文件来对占位符填充生成。请先行理解maven的copy-resources,该maven文件位于haofang-service

    docker直接部署涉及到的生成文件

    • buil.sh
    • hfserver.sh
    • mysql.sh
    • Dockerfile

    compose部署涉及到的生成文件

    • docker-compose.yml
    • Dockerfile

    一、离线安装docker

    自己选择版本下载docker,项目中使用的是19.03.8.tgz

    #解压
    tar -xvf docker-版本号-ce.tgz
    #拷贝到bin目录
    cp docker/* /usr/bin/
    #注册service,写入以下内容
    vim /etc/systemd/system/docker.service
    
    [unit]
    Description=Docker Application Container Engine
    Documentation=https://docs.docker.com
    After=network-online.target firewalld.service
    Wants=network-online.target
      
    [Service]
    Type=notify
    # the default is not to use systemd for cgroups because the delegate issues still
    # exists and systemd currently does not support the cgroup feature set required
    # for containers run by docker
    ExecStart=/usr/bin/dockerd
    ExecReload=/bin/kill -s HUP $MAINPID
    # Having non-zero Limit*s causes performance problems due to accounting overhead
    # in the kernel. We recommend using cgroups to do container-local accounting.
    LimitNOFILE=infinity
    LimitNPROC=infinity
    LimitCORE=infinity
    # Uncomment TasksMax if your systemd version supports it.
    # Only systemd 226 and above support this version.
    #TasksMax=infinity
    TimeoutStartSec=0
    # set delegate yes so that systemd does not reset the cgroups of docker containers
    Delegate=yes
    # kill only the docker process, not all processes in the cgroup
    KillMode=process
    # restart the docker process if it exits prematurely
    Restart=on-failure
    StartLimitBurst=3
    StartLimitInterval=60s
      
    [Install]
    WantedBy=multi-user.target
    
    
    chmod +x /etc/systemd/system/docker.service   #添加文件权限并启动docker
    
    systemctl daemon-reload   #重载unit配置文件
    
    systemctl start docker  #启动Docker
    
    systemctl enable docker.service   #开机自启
    #验证安装情况
    systemctl status docker  #查看Docker状态
    
    docker -v  #查看Docker版本
    

    二、提前pull所需docker镜像

    设置docker国内源

    vim /etc/docker/daemon.json 
    {
    "registry-mirrors": [
    "https://kfwkfulq.mirror.aliyuncs.com",
    "https://2lqq34jg.mirror.aliyuncs.com",
    "https://pee6w651.mirror.aliyuncs.com",
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com"
    ],
    "dns": ["8.8.8.8","8.8.4.4"]
    }
    

    项目所需的镜像列表

    • docker pull mysql:8.0.21
    • docker pull tomcat:jdk8
    • docker pull classmethod/openjdk-alpine-git

    正常启动指令,本文档下方有介绍docker-compose部署,也是基于理解这些指令基础上实施。请自行理解

    #昊方docker-mysql
    docker run -d -v /var/docker-mysql:/var/lib/mysql -p 13307:3306 -e MYSQL_ROOT_PASSWORD=951753 --network haofang-server --name haofang-mysql mysql:8.0.21
    
    #昊方前端docker
    docker run -it --rm -v /var/haofangproject/haofangUI/:/usr/local/tomcat/webapps/ROOT -p 8080:8080 --name haofang-UI tomcat:jdk8
    
    #昊方后端docker
    docker build -t haofang-service-image
    docker run --rm -it -d -p 8082:8082 -v /var/haofangproject/haofangServer/log:/log --network haofang-server --name haofang-service-app haofang-service-image
    

    三、离线安装docker-compose

    自己选择版本下载compose,项目使用的是docker-compose-Linux-x86_64-1.27.1

    #非离线安装可以在服务器中执行该命令
    sudo curl -L https://github.com/docker/compose/releases/download/1.27.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
    
    
    #移动到bin目录下
    mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
    #执行权限
    sudo chmod +x /usr/local/bin/docker-compose /usr/local/bin/docker-compose
    #运行查询版本情况
    docker-compose --version
    

    四、基于docker的jenkins安装与运行

    docker pull jenkinsci/blueocean
    docker run \
      --rm -itd --tty \
      -u root \
      -p 18080:8080 \
      -v /var/jenkins_home:/var/jenkins_home \
      -v /var/run/docker.sock:/var/run/docker.sock \ #docker in docker
      -v /usr/bin/docker:/usr/bin/docker \
      -v /usr/lib64/libltdl.so.7:/lib64/libltdl.so.7 \
      -v /home/jenkins_homes:/home \ #jenkins插件等资源路径
      -v /root/.ssh:/root/.ssh \
      --name jenkins-tutorials \
      jenkinsci/blueocean
    

    启动后基于映射的路径,在jenkins home目录下找到/var/jenkins_home/secrets/var/jenkins_home/secrets/initialAdminPassword找到jenkins登录的初始密码,登录后下载社区推荐插件即可。

    初始化慢的时候,可以直接浏览器打开新页面后输出地址jenkins地址/pluginManager/advanced去修改位于最底下的url为https://mirror.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

    因为有使用到gitee的webhooks去触发jenkins的构建。所以也要安装gitee的插件系统管理->插件管理->搜索gitee下载重启jenkins

    关于jenkins中怎么配置gitee的webhooks,请查看关于gitee的Jenkins插件

    五、ssh-copy-id

    执行对网络服务器的构建免密登录ssh-copy-id root@xx.xx.xx,方便scp与ssh的远程执行

    相关文章

      网友评论

          本文标题:项目持续部署文档

          本文链接:https://www.haomeiwen.com/subject/wmmmektx.html