centos7服务器 docker-compose 安装jenkins并配置

安装环境

Centos7
默认docker和docker-compose已经安装好
如果没有安装的,可以参考这篇博客
https://www.cnblogs.com/darling331/p/14621427.html

文末有我遇到的一些问题,如果你也遇到了,可以参考下

创建目录文件夹

mkdir jenkins

编辑docker-compose.yml文件

version: '3.1'
services:
  jenkins:
    image: jenkins/jenkins:lts
    restart: always
    user: root
    container_name: 2jenkins
    ports:
      - "8080:8080"
    expose:
      - "8080"
      - "50000
    privileged: true
    volumes:
      - $PWD/data/:/var/jenkins_home
      - /etc/localtime:/etc/localtime
      - /var/run/docker.sock:/var/run/docker.sock
      - /usr/bin/docker:/usr/bin/docker
      - /usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7
    environment:
      - JAVA_OPTS='-Djava.util.logging.config.file=/var/jenkins_home/log.properties'

执行docker-compose up -d (-d 参数是表示是否在后台运行镜像实例,跟java -jar && 类似)

image

启动成功

image

输入网址进行登录

http://192.168.2.221:8080/
image

根据页面上的路径提示,拿到密码

image

第一次有点慢

image
image

如果不是很熟悉自己需要什么插件的话,就选择安装推荐的插件

image

开始下载插件,进行自动安装

image

安装完成需要创建用户,或者不创建

image

这里默认就好

image
image

看到这个界面,说明jenkins已经安装成功了

image

接下来,进入配置界面

安装插件:

所需的插件:

• Maven插件 Maven Integration plugin
• 发布插件 Deploy to container Plugin

需要安装插件如下:

安装插件Deploy to container —支持自动化代码部署到tomcat容器

Git 插件 可能已经安装

Maven Integration :jenkins利用Maven编译,打包所需插件
Publish Over SSH :通过ssh连接

ssh 插件

安装过程:

系统管理—>插件管理---->可选插件—>过滤Deploy to container---->勾选—>直接安装
image
image
image
image
image
image
image

如果需要配置远程服务,可以在这里配置<这一步我没有用到,没有实践过>

image

配置jdk、maven命令,全局配置

这里使用jdk8就好了,由于 jdk现在下载需要账户密码,我们在这里进行账号密码授权,没有用户的,可以在网站上注册一个
或者有离线的jdk可以传到服务器上,然后这里配置服务器的路径进行解压安装
image

maven 安装maven3.x的版本就好了,如果有特殊需要的话,可以选择安装最新的

需要gradle的话,也可以自行进行安装

image
image
image

添加仓库,添加仓库密钥

image
image
image

配置打包脚本 -Dmaven.test.skip=true 表示排除test测试类

clean package -Dmaven.test.skip=true
image
image
image
image

第一次编译会有一点慢,要下载很多东西

image
image

服务器上包存在的目录

image

遇到的问题及解决方式

问题一

Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on 10.0.2.3:53: server m
修改 vi /etc/resolv.conf
添加
nameserver 8.8.8.8
nameserver 114.114.114.114
不要执行重启网卡,否则配置会被还原
--systemctl restart network
或者 编辑 /etc/systemd/resolved.conf 这个文件,把 DNS 那一行解开注释
vi /etc/systemd/resolved.conf
image

问题二

出现电脑访问不了虚拟机的web端口的话,重启下centos防火墙

接着先是看centos7的防火墙的状态,查看的命令为
sudo systemctl status firewalld

查看后,看到active(running)就意味着防火墙打开了
如果想关闭防火墙,命令为:
sudo systemctl stop firewalld

关闭后查看是否关闭成功,如果看到inactive(dead)就意味着防火墙关闭了
打开防火墙的命令为:
sudo systemctl start firewalld

上面打开和关闭防火墙都是临时的,重启电脑后又会恢复到默认的状态(我的默认状态是打开)。如图,我先关闭了防火墙,然后输入reboot重启centos7
重启后查看防火墙状态,还是处于打开的状态

如果是想重启后防火墙还是处于关闭的状态,得使用命令:
sudo systemctl disable firewalld

输入上一步的命令后(sudo systemctl stop firewalld。),关闭防火墙,然后重启

问题三

该Jenkins实例似乎已离线
原因一:升级站点的链接https://updates.jenkins.io/update-center.json默认是https
解决办法:打开一个新的页面输入http://your_jenkins_url/pluginManager/advanced页面最下面找到update site把链接的https改成http,然后保存。
或者直接修改文件Jenkins_home/hudson.model.UpdateCenter.xml
https://updates.jenkins.io/update-center.json改成http://updates.jenkins.io/update-center.json
我修改后就好了,但是第二次部署的时候,没有遇到这个问题
如果有遇到相同问题,但是有别的解决方案的,请回复我

问题四

启动容器时报错
iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 5000 -j DNAT --to-destination 172.18.0.4:5000 ! -i br-ff45d935188b: iptables: No chain/target/match by that name. (exit status 1)
解决方案:重启docker
systemctl restart docker

问题五

jenkins编译时出现错误
Waiting for Jenkins to finish collecting data
解决:
勾选 Build -> Disable automatic fingerprinting of consumed and produced artifacts

问题六

构建历史时间和当前时间不对
查看宿主机时间,修改时间 tzselect
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
查看Jenkins系统信息
发现时区不对
image
修改时区
image
image
执行
System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone','Asia/Shanghai')
image

问题七

指纹验证
jenkins Waiting for Jenkins to finish collecting data
构建完成后 Jenkins 对文件进行指纹验证导致的。
这个指纹验证功能在 Maven 项目的构建中是自动开启的。
所以我们只需要关闭在 Maven 构建配置中的自动指纹验证选项就可以了。
image

问题八

当 Maven 升级到3.8.1 之后,执行 mvn clean package 命令后会报错如下
maven-default-http-blocker (http://0.0.0.0/): Blocked mirror for repositories
分析:
maven在3.8.1 的默认配置文件中增加了一组标签,如果仓库镜像是http 而不是https 就会被拦截禁止访问,而当前公司私服一般是http 而不支持https.
jenkins 安装maven的时候,降低maven的版本 到3.8x的上一个版本

文末 附一下一个大佬的安装步骤,大同小异
https://blog.csdn.net/qq_37671523/article/details/107306463

这时候就可以嵌入一些编译完成之后的脚本和要做的事情了,后续慢慢补充,
jenkins还是有很多功能需要摸索的

posted @ 2021-12-08 20:48  darling331  阅读(298)  评论(0编辑  收藏  举报