jenkins+docker 自动化构建

99 阅读3分钟

最近在看docker,正好自己有阿里云服务器,来实现一下基于docker的自动化部署

使用yum安装docker

关于docker部署 可以看这篇文章 juejin.cn/post/729815…

yum install docker

docker -v // 查看版本是否安装成功

使用docker安装jenkins镜像

有多个的话就选 docker.io/jenkins/jenkins:lts

docker pull jenkins/jenkins:lts

运行jenkins容器

docker run -d -u 0 --privileged --name jenkins_container -p 49003:8080 -v /root/jenkins_container:/var/jenkins_home jenkins/jenkins:lts

  • -d:表示在后台运行
  • -u 0 :传入root账号ID(超级用户的ID是0),覆盖容器中内置的账号
  • --privileged:赋予最高权限
  • --name:给容器取名为jenkins_container
  • -p:端口映射,将容器的8080端口映射到服务器的49003端口
  • -v /root/jenkins_container:/var/jenkins_home :将docker容器内的目录/var/jenkins_home映射到服务器/root/jenkins_container目录上

运行完之后可以发现服务器/root/jenkins_container目录下多了很多文件。然后我们需要去云服务器管理控制台配置安全组开放49003端口。

image.png

jenkins安装

我们使用docker将jenkins容器跑起来之后 输入服务器公网ip:49003就可以访问了

image.png

安装页面上的提示找到密码,我们之前将:docker容器内的目录/var/jenkins_home映射到服务器/root/jenkins_container目录上,所以我们直接访问如下地址

cat /root/jenkins_container/secrets/initialAdminPassword

点击继续后, 选中"安装推荐的插件":

image.png

安装完之后 创建用户后并进行实例配置

image.png jenkins安装4.jpg

jenkins配置

安装Publish Over SSH插件 image.png

下图是我已经安装好的

image.png

配置ssh

image.png

输入该SSH server名字、服务器地址、服务器登录用户名,服务器登录用户密码。 这里的hostname 不要带http jenkins配置5.jpg

然后安装下node插件:

image.png

配置node

image.png image.png

项目部署

image.png image.png

配置git

image.png image.png

选好node版本

image.png

增加构建步骤-下载依赖 打包项目

image.png image.png

再增加步骤 打包镜像 启动容器

image.png

先停止容器 删除容器 然后进入工作区 打包镜像 启动容器

image.png

自动部署

非生产环境每次部署的时候都要手动去点构建的话太麻烦了,我们可以结合giteeWebHooks来实现代码推送的时候自动部署。

我们先来给jenkins安装gitee插件:

image.png

插件下载好之后,进入我们的项目 > 配置 > 触发构建器

选择“Gitee webhook触发构建”,后面的那个URL需要记录下来,后续需要配置到giteeWebHooks中的:

image.png

生成Gitee WebHook 密码

image.png

再打开我们的源代码管理平台gitee,选择一个仓库,来到“管理” -> “WebHooks” -> “添加webHook” :

填写刚才生成的地址和密码

image.png

添加后就可以 代码推送自动构建了

参考文章:

  1. # 前端代码部署-gitee + docker自动部署
  2. # 前端项目部署-docker镜像部署

问题:

当使用docker命令报如下警告Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.解决方法如下

image.png

因为我们直接yum install docker默认安装的是podman-docker,在我们设置docker开机自启动会报错Failed to enable unit: Unit file docker.service does not exist,所以我们重新安装一下

首先卸载之前的docker

sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine

安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

设置yum源

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

可以查看所有仓库中所有docker版本,并选择特定版本安装

yum list docker-ce --showduplicates | sort -r

安装最新版

yum install -y docker-ce

查看版本是否安装成功

docker version

启动docker

sudo systemctl start docker

设置开机自启动

sudo systemctl enable docker

查看docker有没有自启动成功

systemctl is-enabled docker

设置docker镜像源 /etc/docker/daemon.json

{
  "registry-mirrors": [
    "https://docker.hpcloud.cloud",
    "https://docker.m.daocloud.io",
    "https://docker.unsee.tech",
    "https://docker.1panel.live",
    "http://mirrors.ustc.edu.cn",
    "https://docker.chenby.cn",
    "http://mirror.azure.cn",
    "https://dockerpull.org",
    "https://dockerhub.icu",
    "https://hub.rat.dev",
    "https://docker.m.daocloud.io",
    "https://dockerproxy.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://docker.nju.edu.cn",
    "https://cr.console.aliyun.com",
    "https://ccr.ccs.tencentyun.com",
    "https://dockerproxy.com",
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com",
    "https://hubgw.docker.com",
    "https://ox288s4f.mirror.aliyuncs.com",
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://mirror.ccs.tencentyun.com"
  ]
}

安装 chromium 解决Failed to launch the browser process

sudo yum install -y chromium