最近改用docker部署jenkins,踩了不少坑,走了不少弯路,把流程整理出来希望能让大家少走一些弯路
安装docker服务
- 安装Docker CE社区免费版
1.1 安装一些必要的系统工具:
yum install -y yum-utils device-mapper-persistent-data lvm2
1.2 添加软件源信息:
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
1.3 更新 yum 缓存:
yum makecache fast
1.4 安装 Docker-ce:
yum -y install docker-ce
1.5 启动 Docker 后台服务
systemctl start docker
1.6 添加开机启动
systemctl enable docker.service
1.7 为docker添加私有仓
在/etc/docker文件夹下下创建daemon.json文件
添加内容:
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
1.8 重启dockers服务
systemctl restart docker
安装jenkins
运行jenkins,在运行的时候如果没有镜像会自动下载镜像运行容器.
需要稍等一会
运行容器
docker run --rm -u root -p 9898:8080 -v /data/jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v "$HOME":/home jenkinsci/blueocean
使用docker命令查看日志获取初始密码
docker logs jenkins
下载centos7.6制作打包发送环境
在nodejs打包环境上吃亏不少,很多现成的nodejs环境都无法使用,包括jenkins推荐的版本,都无法打包vue,都会卡在npm依赖安装那里,如果你们可以那真是羡慕你们
docker pull lambdaexpression/centos7.6.1810
运行容器并在容器中安装打包需要的nodejs,jdk,ssh
jdk安装我使用的方式是软连接
ln -s /usr/java/jdk1.8.0_191/bin/java /usr/local/bin/java
ln -s /usr/java/jdk1.8.0_191/bin/javac /usr/local/bin/javac
nodejs安装
yum update
curl -sL https://rpm.nodesource.com/setup_10.x | bash -
yum install -y nodejs
如果没安装ssh需要安装ssh
yum install -y openssh-server
image.png
当配置好环境把环境容器制作成镜像
我是使用的是commit
先使用docker ps 获取到正在运行容器的id
再使用docker commit 容器id node:v1 提交成一个新镜像
在git里编写jenkinsfile文件
重点
1.制作一个名为gradle的gradle缓存存放容器,这样可以避免每次java打包都会下载依赖,提高打包速度
docker run -v /root/.gradle:/root/.gradle --restart=always --name gradle -dit debian
2.-v /root/.ssh:/root/.ssh 把宿主机的公钥映射到打包环境里,可以使用宿主机免密传输
3.在Jenkinsfile里使用docker参数来启动已经编写好的node:v1镜像打包环境
pipeline {
agent {
docker {
image 'node:v1'
args '-p 3000:3000 --name node -v /root/.ssh:/root/.ssh --volumes-from gradle '
}
}
}