Docker 搭建 Jenkins 实现自动部署

自动化部署(持续集成/CI+持续交付/CD)不仅可以提升开发效率,让程序员更专注产品与业务的开发,还可以节省很多运维成本以及提升运维效率。其中,Jenkins是自动化部署中最流行的工具,尤其是Docker+Jenkins的完美搭配,每个程序员都应该掌握这两个工具的使用。

环境配置

操作系统:CentOS Linux release 7.6.1810
Docker 版本:19.03.5
Jenkins 版本:2.204.1

Docker安装Jenkins

Docker下载Jenkins

docker pull jenkins/jenkins:lts //最新版

查看Jenkins镜像

docker images
docker inspect jenkins镜像ID

Docker 搭建 Jenkins 实现自动部署

创建一个Jenkins目录

mkdir /data/jenkins_home;

安装启动Jenkins容器

docker run -d --name jenkins -p 8081:8080 -v /data/jenkins_home:/var/jenkins_home jenkins/jenkins:lts;
备注:
-d //启动在后台
--name //容器名字
-p //端口映射(8081:宿主主机端口,8080:容器内部端口)
-v //数据卷挂载映射(/data/jenkins_home:宿主主机目录,另外一个即是容器目录)
enkins/jenkins:lts //Jenkins镜像(最新版)

查看Jenkins启动情况

docker ps | grep jenkins;

Docker 搭建 Jenkins 实现自动部署

安装过程遇到的小问题

Jenkins容器docker run之后状态总是Exited

查看docker日志 :
docker logs jenkins  
发现是目前权限问题
因为/data/jenkins_home 目录是root权限

Docker 搭建 Jenkins 实现自动部署

Docker 搭建 Jenkins 实现自动部署

解决:
chown -R 1000:1000 /data/jenkins_home //用户组改变

Docker 搭建 Jenkins 实现自动部署

宿主主机端口要开启

因为本操作是在阿里云ECS上进行安装的,需要在安全组里开放8081此端口。

访问Jenkins

http://120.26.50.165:8081 //ip:端口号

管理配置Jenkins

解锁

在安装完成后,默认生成了一个登录密码,首次登录需要这个密码。
密码路径:var/jenkins_home/secrets/initialAdminPassword //容器内部
查找密码:
docker exec -it jenkins_01 bash //进入jenkins容器
cat /var/jenkins_home/secrets/initialAdminPassword //查看密码

Docker 搭建 Jenkins 实现自动部署

安装插件

新手安装建议选择:Install suggested plugins,安装过程大概半个多小时。

Docker 搭建 Jenkins 实现自动部署

Docker 搭建 Jenkins 实现自动部署

管理用户创建

这个用户就是最大管理者权限,相当于admin

Docker 搭建 Jenkins 实现自动部署

Jenkins配置完成

到此步,安装就大功告成!
http://120.26.50.165:8081 //ip:端口号

Docker 搭建 Jenkins 实现自动部署

Docker 搭建 Jenkins 实现自动部署

实现自动化部署

有了Jenkins,接下来就是代码的自动部署过程了。

请参考这一篇:Docker+lnmp+Jenkins+码云实现PHP代码自动部署

本作品采用《CC 协议》,转载必须注明作者和本文链接
阿德
本帖由系统于 4年前 自动加精
zhangdeTalk
讨论数量: 4

收藏了 :ox:

4年前 评论

jenkins实例似乎已离线 问题解决咋解决

4年前 评论
Hesunfly

查看密码的话直接在/data/jenkins目录就可以查看了啊,不是已经关联了吗,不需要进去容器内部了吧

4年前 评论

如果直接按照命令复制的话,文章中有一处错误:

#此处的 jenkins_01 在上文中并不存在
docker exec -it jenkins_01 bash //进入jenkins容器

所以应该改成:

docker exec -it jenkins bash //进入jenkins容器
3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!