一、背景
在传统开发中,比如前端开发好项目以后需要打包部署上线,通常采用前端本地打包好以后将生成的dist文件给后端,后端再部署到服务上线,在这中间就会出现很多问题,所以我们采用一种自动化部署的方式帮我们做前端的打包、部署等工作,那么jenkins就是其中的一种方式。
二、jenkins是什么?有什么作用
111
Jenkins是一个开源的自动化构建工具,它可用于持续集成和持续交付。Jenkins通过在构建过程中自动执行一系列任务,如编译代码、运行测试、打包构建产物等,从而加快软件交付速度并提高软件质量。
三、实现docker + jenkins安装的大概流程
graph TD
连接远程服务 --> 安装docker --> 使用docker安装并运行jenkins --> 在jenkins上配置部署项目 --> 打包部署上线
四、docker安装
1. 远程连接服务器
ssh root@XX.XXX.XXX.XXX(自己的服务器ip) 例如:ssh root@47.100.100.100
输入密码
👆以mac为例,可通过自带shell进行远程连接。
2. 安装docker
# 使用 yum 安装
$ sudo yum install -y yum-utils
# 看情况自己是否需要切换源
$ sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 更新 yum 软件源缓存,并安装 docker-ce。
sudo yum install docker-ce docker-ce-cli containerd.io
查看docker是否安装成功
docker -v 出现类似下面的界面就代表成功了。
五、jenkins安装
docker安装jenkins并运行
1. 下载jenkins
docker pull jenkins/jenkins
2. 创建一个文件夹
mkdir ~/jenkins
3. 运行并启动jenkins容器
docker run -d -p 8080:8080 -p 50000:50000 -v ~/jenkins_home:/var/jenkins_home jenkins/jenkins
完成以上操作后,在浏览器输入XXX.XXX.XXX.XXX:8080 就会出现jenkins界面了
4. 进入【入门】输入密码界面
# 查看刚才创建的容器id
docker ps
# 复制容器id,然后进入容器内
docker exec -it <container_name_or_id> /bin/bash
# 查看密码
cat var/jenkins_home/secrets/initialAdminPassword
# 复制密码并粘贴登录
5. 进入插件安装,也可以待会用到的时候安装都行
注意一下几个比较重要的插件是否有安装。
- node相关(比如下载依赖、打包什么的都会用到)
2. ssh相关
- 仓库相关的插件
比如:git/gitee/github等
其他的插件按照推荐的和自己需要使用的来就好了。
六、配置jenkins部署vue项目
滴答滴,滴答滴,成功一大部分喽,进入配置部分啦~
tip: 前往【系统管理】-【插件管理】下载“Localization(Simplified)”这个中文插件,可能使用起来会方便一点。
第一步:新建任务
第二步: 任务配置
如果👆node选项为空,则去首页的【系统管理】-【全局工具配置】,找到对应的新增node界面,选择自己需要的node版本即可,如果不为空直接选择就好了,配图参考如下:
第三步:实现构建
例如vue项目中,执行完这一步会生成一个dist文件,那么我们接下来的任务就是将dist服务部署到服务器。
第四步:实现部署
执行完上面操作会生成一个dist文件,那么在jenkins_home中可以查看到。
注意查看有没有安装"publish Over SSH"这个插件哈
首次搭建的时候,可能需要来这里配置服务器相关的东西,前往【系统管理】-【系统配置】进行配置👇
配置完成以后,就可以按照自己需要进行下面配置了
七、部署中常见问题
1. 执行docker命令的时候出现"Cannot connect to the docker daemon at XXXX,Is the docker daemon running"
可能原因:docker没有启动 解决方案:service docker start
八、docker常见命令
-
查看所有当前运行的所有 Docker 容器
docker ps -
查看所有 Docker 容器(包括已经停止的)
docker ps -a -
进入某个docker容器
docker exec -it <container_name_or_id> /bin/bash -
以root用户进入 docker 容器
docker exec -u 0 -it <container_name> /bin/bash -
重启容器
docker restart -
docker start 和 docker restart区别
docker restart:正在运行的容器需要重新启动时 -
以root用户进入 docker 容器
docker exec -u 0 -it <container_name> /bin/bash -
删除docker容器
docker rm <container_name_or_id> -
退出容器
logout