前言
基于CentOS 7.6,使用docker+jenkins实现简单的前端自动化部署。
1.准备工作
首先到阿里云注册一个账号,然后可以白嫖三个月的服务器。
领取成功后,连接到远程服务器安装一些必备的工具。
2.安装docker
2.1 安装docker-ce
# 更新软件库
yum update -y
# 安装必要的包
yum install -y yum-utils device-mapper-persistent-data lvm2
# 设置仓库
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装社区版的docker
yum -y install docker-ce
2.2 配置镜像加速器
国内从DockerHub拉取镜像有时会遇到困难,此时可以配置镜像加速器
mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://9fay50uv.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
2.4 启动服务
systemctl start docker.service
2.3 docker的常用命令
# 查询镜像
docker search [imageName]
# 拉取镜像
docker pull [imageName]
# 查询已经安装的镜像
docker images
# 删除镜像
docker rmi [imageName]
# -d 后台运行 -p 端口映射 -v 目录映射
docker run -d -p 8080:8080 -v /usr/bin/docker:/usr/bin/docker jenkins
# 运行的容器
docker ps
# 进入容器中
docker exec -it jenkins /bin/bash
# 启动容器
docker start jenkins
# 停止容器
docker stop jenkins
3.在docker中安装jenkins并且运行
3.1 安装jenkins镜像
docker search jenkins
我这边安装的是jenkins/jenkins:2.375的版本
docker pull jenkins/jenkins:2.375
3.2 启动jenkins
docker run \
-u root -d -p 8080:8080 \
-v /tmp/jenkins-data:/var/jenkins_home \ # 在宿主机里映射目录
-v /var/run/docker.sock:/var/run/docker.sock \ # 让容器中也可以使用docker命令
-v /usr/bin/docker:/usr/bin/docker # 让容器中也可以使用docker命令
-v /
jenkins/jenkins:2.375
3.3 初始化
在浏览器中输入服务器ip和映射的端口号,可以看到jenkins的初始化界面,按照提示逐步操作:
启动容器的时候对容器做了目录的映射,所以容器中的 /var/jenkins_home/secrets/initialAdminPassword的文件对应宿主机的位置是 /tmp/jenkins-data/secrets/initialAdminPassword
# 获取密码
cat /tmp/jenkins-data/secrets/initialAdminPassword
点击安装插件:
如果安装失败,可以使用:
cat /tmp/jenkins-data/hudson.model.UpdateCenter.xml
<sites>
<site>
<id>default</id>
<url>https://updates.jenkins.io/update-center.json</url>
</site>
</sites>
# 将https://updates.jenkins.io/update-center.json替换为
# https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
# 清华大学的镜像地址
耐心等待安装完毕,进入创建管理员账号界面,根据提示创建用户。
3.4 配置jenkins
进入管理插件页面
选择ssh插件,直接安装,安装完成后回到首页。
选择系统设置:
将页面拖到Publish over SSH,配置SSH Servers
点击Test Configuration 显示success说明配置没问题:
返回首页新建一个项目:
选择源码管理,输入git仓库地址:
添加仓库账号密码:
保存后,来到build steps:
添加shell脚本:
echo "清理已有容器和镜像"
container="nodeapp"
image=${container}
if docker ps | grep ${container};then
docker stop ${container}
fi
if docker ps -a | grep ${container};then
docker rm ${container}
fi
if docker images | grep ${image};then
docker rmi ${image}
fi
echo "镜像制作"
docker build -t ${image} .
echo "镜像运行"
docker run -d -u root --name ${container} -p 3000:3000 ${image}
3.5 开始构建
控制台输出情况:
构建成功后,通过IP和映射的端口号访问页面
4.推送代码自动触发构建
进入jenkins中的项目配置=>构建触发器,勾选触发远程构建,生成一个身份验证令牌
然后在jenkins首页进入系统管理=>脚本命令行,执行:
# 关闭跨站请求伪造保护
hudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION = true
最后在你的仓库设置里配置WebHooks:
URL就是 JENKINS_URL /job/jenkins_node/build?token= TOKEN_NAME
这样就可以一推送代码就自动触发构建啦!