从零搭建docker+jenkins前端自动化部署

391 阅读2分钟

前言

基于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

这样就可以一推送代码就自动触发构建啦!