第1集,环境搭建
第3集,WebHook触发mvn打包
第4集,SonarQube实现CodeReview
第5集,build image
第6集,部署到测试环境,Selenium自动测试
第7集,模拟版本更新,在测试环境验证
第8集,部署到生产环境
第9集,流水线部署到测试环境
一、在gitlab上创建项目dev_lnmp
1.创建项目



2.在jenkins机器上克隆该项目

sudo -i
yum -y install git
git config --global user.name "root"
git config --global user.email "anqixiang@163.com"
git clone http://172.16.38.31/root/dev_lnmp.git二、准备LNMP环境(在jenkins机器上做)
1.拉取mysql、richarvey/nginx-php-fpm镜像
mysql_v8.0.18镜像下载地址:
链接:https://pan.baidu.com/s/1aEk0YjnFPKpGsa_Z7kX2SQ 
提取码:cumynginx-php-fpm镜像下载地址:
链接:https://pan.baidu.com/s/1IO9abY8PuTWgiQLgBB2Mnw 
提取码:at3jdocker pull mysql
docker pull richarvey/nginx-php-fpm:latest
docker images
2.在dev_lnmp下创建目录,目录结构如下


3.docker-compose-module.yml内容:
version: '3.7'
services:
  mysql:
    image: 172.16.38.202:8010/library/mysql:8.0.18
    container_name: lnmp_mysql
    hostname: lnmp_mysql
    restart: always
    command:
      - --default-authentication-plugin=mysql_native_password
      - --character-set-server=utf8
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    ports:
      - 3306:3306
    volumes:
      - /data/docker_volume/mysql/mysql_data:/var/lib/mysql
    networks:
      - lnmp
    security_opt:
      - seccomp:unconfined
  lnmp_web:
    image: #tag#richarvey/nginx-php-fpm:latest
    container_name: lnmp_web
    hostname: lnmp_web
    restart: always
    depends_on:
      - mysql
    ports:
      - 80:80
      - 443:443
    networks:
      - lnmp
networks:
  lnmp:
    name: lnmp_network
    driver: bridge
4.构建代码镜像的材料(以搭建wordpress为例)
Dockerfile内容:
FROM richarvey/nginx-php-fpm
MAINTAINER nsd_anqixiang@163.com
#用于版本控制
ENV WORDPRESS_VERSION 4.9
COPY index.html /var/www/html
ADD wordpress-${WORDPRESS_VERSION}-zh_CN.tar.gz /var/www/htmlindex.html内容:(用于验证版本的变化)
test_1.0下载wordpress包
wget https://cn.wordpress.org/wordpress-4.7.4-zh_CN.tar.gz
5.docker_volume数据卷,用于数据持久化
存储的是数据库的初始化数据,init_data.tgz是docker_volume目录的归档,用于后期的部署

6.构建镜像脚本build_image.sh
#!/bin/bash
set +e
current_dir=$(cd `dirname $0` && pwd)   #当前工作目录
#Harbor仓库信息
harbor_ip=172.16.38.202
harbor_port=8010
harbor_user=admin
harbor_pwd=admin
harbor_project=lnmp
set -e
docker login http://${harbor_ip}:${harbor_port} -u admin -p admin
#构建镜像
Build_Image(){
    image_name=nginx-php-fpm
    image_tag=ver1.0_$(date "+%Y%m%d")
    image_path=${harbor_ip}:${harbor_port}/${harbor_project}/${image_name}:${image_tag}
    cd ${current_dir}/dockerfiles/nginx/
    docker build -t ${image_path} .
    docker push ${image_path}
}
#更改docker-compose.yml文件
Update_Compose(){
    compose_module_file=${current_dir}/docker-compose-module.yml
    compose_file=${current_dir}/docker-compose.yml
    \cp ${compose_module_file} ${compose_file}
    #local base_tag=$1          #jenkins传进来的参数
    new_tag=${image_path}
    base_tag=$(sed -n '/#tag#/p' ${compose_file} |awk -F'#' '{print $3}')       #提取docker-compose.yml的镜像tag
    sed -ri "/#tag#/ s@^(.*)(#tag#)(.*)@\1${new_tag}@" ${compose_file}          #替换为新的tag
}
######################主函数######################
Build_Image
Update_Compose
set +e
7.将整个项目上传到gitlab
cd dev_lnmp
sudo git add .
git commit -m "add c1"
git push
三、Harbor创建项目


四、将公共镜像如mysql镜像上传到library项目(Jenkins机器操作)
1.配置docker信任仓库
sudo vim /etc/docker/daemon.json
"insecure-registries": ["172.16.38.202:8010"]
sudo systemctl restart docker
2.打标签
docker tag  mysql:8.0.18   172.16.38.202:8010/library/mysql:8.0.18
3.上传镜像
docker login http://172.16.38.202:8010 -u admin -p admin
docker push 172.16.38.202:8010/library/mysql:8.0.18
4.仓库查看

                
                








