第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
提取码:cumy
nginx-php-fpm镜像下载地址:
链接:https://pan.baidu.com/s/1IO9abY8PuTWgiQLgBB2Mnw
提取码:at3j
docker 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/html
index.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.仓库查看