最近在看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端口。
jenkins安装
我们使用docker将jenkins容器跑起来之后 输入服务器公网ip:49003就可以访问了
安装页面上的提示找到密码,我们之前将:docker容器内的目录/var/jenkins_home映射到服务器/root/jenkins_container目录上,所以我们直接访问如下地址
cat /root/jenkins_container/secrets/initialAdminPassword
点击继续后, 选中"安装推荐的插件":
安装完之后 创建用户后并进行实例配置
jenkins配置
安装Publish Over SSH插件
下图是我已经安装好的
配置ssh
输入该SSH server名字、服务器地址、服务器登录用户名,服务器登录用户密码。
这里的hostname 不要带http
然后安装下node插件:
配置node
项目部署
配置git
选好node版本
增加构建步骤-下载依赖 打包项目
再增加步骤 打包镜像 启动容器
先停止容器 删除容器 然后进入工作区 打包镜像 启动容器
自动部署
非生产环境每次部署的时候都要手动去点构建的话太麻烦了,我们可以结合gitee的WebHooks来实现代码推送的时候自动部署。
我们先来给jenkins安装gitee插件:
插件下载好之后,进入我们的项目 > 配置 > 触发构建器
选择“Gitee webhook触发构建”,后面的那个URL需要记录下来,后续需要配置到gitee的WebHooks中的:
生成Gitee WebHook 密码
再打开我们的源代码管理平台gitee,选择一个仓库,来到“管理” -> “WebHooks” -> “添加webHook” :
填写刚才生成的地址和密码
添加后就可以 代码推送自动构建了
参考文章:
问题:
当使用docker命令报如下警告Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.解决方法如下
因为我们直接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