docker 中安装jenkins 并配置构建工具

前景提要

jenkins有大致三种方式安装启动

  1. 下载war部署在linux宿主机tomcat等web服务器上
  2. 下载war包直接用java命令运行
  3. 部署在docker中

部署在docker中的好处

  1. docker 技术炽手可热,学习下必须的
  2. 占用的空间小,方便移植
  3. jenkins存在漏洞, 之前我宿主机被挖矿病毒入侵(贼难受,我就1核2g的渣渣配置都被当肉鸡),cpu天天99%,敲命令都卡。存放在docker中提高安全性(自我感觉,至少现在还没在中病毒)

大致思路

首先 宿主机需要安装项目构建所需工具(maven、node、npm…)
然后 将构建工具文件挂载到docker 中的/usr/bin/ 文件夹下
其次 构建时需要给jenkins足够 的权限

dockefile 构建 jenkins

原因:
jenkins在进行集成部署时,很多 的构建工具、文件夹需要root权限,也需要配置很多的工具(maven、node、npm…)所以要对环境变量、权限进行详细配置

jenkins 镜像有很多,只要docker search jenkins就行,版本很多选择下载次数多就行,因为官方的jenkins镜像版本较早,所以选择排名第二 的jenkins/jenkins

假设现在的宿主机中各个工具目录如下
git_home=/home/jenkins/software/git-2.21.0
maven_home=/home/jenkins/software/apache-maven-3.5.4
node_home=/home/jenkins/software/node-v10.15.3-linux-x64

创建Dockerfile如下

FROM jenkins/jenkins
# 开启权限,后面构建需要
USER root
# 构建时方便以管理员方式运行
RUN apt-get update \
        && apt-get install -y sudo
USER jenkins

运行命令如下

docker run -d -p 8084:8080 \
 --restart always  \
 -u root \
 -v /home/jenkins/:/var/jenkins_home/ \
 -v $MAVEN_HOME/bin/mvn:/usr/bin/mvn \
 -v $NODE_HOME/bin/node:/usr/bin/node \
 -v $NODE_HOME/bin/npm:/usr/bin/npm
 --name hgf_jenkins  \
${镜像id}

此时需要验证下以上配置工具是否可以以root权限使用

#进入容器
docker exec -it ${容器id} /bin/bash
#首先验证非root用户是否能执行
npm -v
mvn -v
node -v
....
# 如果报错,应该是挂载执行的文件不对

#验证root能否运行
sudo npm -v
sudo node -v
sudo mvn -v
.....

#如果其中有些不行,报错如下以(mvn为例)
sudo: mvn: command not found
sudo ln -s ${docker中MAVEN_HOME}/bin/mvn /usr/bin/mvn

现在大功告成,可以在jenkins页面中下载一些常用的jenkins插件

publish over ssh:远程连接工具

git parameter: git 参数化部署,可以选择分支部署

Version Number:优雅的生成版本号

maven plugin:maven构建工具

最后这里说下为啥我非要以root权限执行工具

首先那些工具也不一定非要用挂载的方式,jenkins配置中也可以下载所需工具,但是因为我的宿主机是腾讯云的最低挡的,想想如果其他docker也需要这些工具,那么岂不是每个docker中都需要单独下载那些工具,docker容器会占用更大的空间而且冗余,在下可是精益求精的程序员(主要是穷~~~~),那么挂载的方式可以让各个docker公用一个工具。
root权限运行是因为有些工具构建时需要root权限,比如说node,npm,如果有更好的方式欢迎留言,谢谢~