docker 中安装jenkins 并配置构建工具
前景提要
jenkins有大致三种方式安装启动
- 下载war部署在linux宿主机tomcat等web服务器上
- 下载war包直接用java命令运行
- 部署在docker中
部署在docker中的好处
- docker 技术炽手可热,学习下必须的
- 占用的空间小,方便移植
- 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,如果有更好的方式欢迎留言,谢谢~