docker安装Jenkins

踩过的坑

- docker安装的Jenkins在配置maven时有黄色的提示【不在挂载目录】
  - gitee 构建项目
  - Jenkins新建item后无法构建项目

参考文章

解决docker安装后导致无法使用maven拉取项目的问题
解决构建项目的前期配置,maven拉包配置
https://blog.csdn.net/u012702547/article/details/126156584https://blog.csdn.net/weixin_46034375/article/details/127572547后续构建配置
脚本提供

部分图片也是直接cv过来的,如果有侵权什么的请联系删除
如果大家有其他方式欢迎分享!!!

安装Jenkins

1.选择的镜像版本

jenkins/jenkins:2.346.3-2-centos7-jdk8

2.构建容器

docker run -d \
-p 8080:8080 \
-p 50000:50000 \
-v /usr/local/src/jenkins:/var/jenkins_home \
-v /etc/localtime:/etc/localtime \
--name jenkins \
jenkins/jenkins:2.346.3-2-centos7-jdk8

-v /usr/local/src/jenkins:/var/jenkins_home :挂载Jenkins的主目录

3.登录Jenkins
通过容器日志查看密码

安装Jenkins插件

Jenkins 在构建 maven 项目时,需要先安装 【Maven Integration】插件。

docker jekins部署maven项目 docker中jenkins配置maven不生效_Jenkins


docker jekins部署maven项目 docker中jenkins配置maven不生效_Jenkins_02

安装 Publish Over SSH 插件

docker jekins部署maven项目 docker中jenkins配置maven不生效_Jenkins_03


docker jekins部署maven项目 docker中jenkins配置maven不生效_Jenkins_04

安装git插件和gitee插件

docker jekins部署maven项目 docker中jenkins配置maven不生效_jenkins_05

安装git

通过yum命令安装即可,再配置一下。可以通过git命令拉取代码就行

安装maven

1.直接通过压缩包安装【简单一点】

2.然后将maven移动到Jenkins的挂载目录下【上文的/usr/local/src/jenkins】

docker jekins部署maven项目 docker中jenkins配置maven不生效_docker_06

切换阿里源

<mirror>
  <id>alimaven</id>
  <mirrorOf>central</mirrorOf>
  <name>aliyun maven</name>
  <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
<mirror>
  <id>alimaven</id>
  <name>aliyun maven</name>
  <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
  <mirrorOf>central</mirrorOf>
</mirror>
<mirror>
  <id>central</id>
  <name>Maven Repository Switchboard</name>
  <url>http://repo1.maven.org/maven2/</url>
  <mirrorOf>central</mirrorOf>
</mirror>
<mirror>
  <id>repo2</id>
  <mirrorOf>central</mirrorOf>
  <name>Human Readable Name for this Mirror.</name>
  <url>http://repo2.maven.org/maven2/</url>
</mirror>
<mirror>
  <id>ibiblio</id>
  <mirrorOf>central</mirrorOf>
  <name>Human Readable Name for this Mirror.</name>
  <url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>
</mirror>
<mirror>
  <id>jboss-public-repository-group</id>
  <mirrorOf>central</mirrorOf>
  <name>JBoss Public Repository Group</name>
  <url>http://repository.jboss.org/nexus/content/groups/public</url>
</mirror>
<mirror>
  <id>google-maven-central</id>
  <name>Google Maven Central</name>
  <url>https://maven-central.storage.googleapis.com</url>
  <mirrorOf>central</mirrorOf>
</mirror>
<!-- 中央仓库在中国的镜像 -->
<mirror>
  <id>maven.net.cn</id>
  <name>oneof the central mirrors in china</name>
  <url>http://maven.net.cn/content/groups/public/</url>
  <mirrorOf>central</mirrorOf>
</mirror>

安装jdk

和maven的道理相同

不过看其他文章说Jenkins有默认的jdk也可以不用安装【没试过】

docker jekins部署maven项目 docker中jenkins配置maven不生效_Jenkins_07

配置Jenkins全局工具配置

docker jekins部署maven项目 docker中jenkins配置maven不生效_maven_08

从容器中查看是否挂载成功【路径后面有用】
docker exec -it jenkins bash 进入容器cd var/jenkins_home/ 进入目录ls 查看

maven配置【注意:文件路径是Jenkins容器中的路径,并不是宿主机的路径】

docker jekins部署maven项目 docker中jenkins配置maven不生效_Jenkins_09

jdk配置【注意:文件路径是Jenkins容器中的路径,并不是宿主机的路径】【可能可以不配】

docker jekins部署maven项目 docker中jenkins配置maven不生效_jenkins_10

git配置【这个路径就是宿主机的路径】

【注意】 /usr/local/git/bin/git 是 git 文件的路径,不是 git 的安装路径,如果使用 yum 或 dnf 安装的 git 会在 /usr/bin/git 路径下。

docker jekins部署maven项目 docker中jenkins配置maven不生效_maven_11

maven【注意:文件路径是Jenkins容器中的路径,并不是宿主机的路径】

docker jekins部署maven项目 docker中jenkins配置maven不生效_Jenkins_12

系统配置

docker jekins部署maven项目 docker中jenkins配置maven不生效_gitee_13

Gitee配置

docker jekins部署maven项目 docker中jenkins配置maven不生效_gitee_14


docker jekins部署maven项目 docker中jenkins配置maven不生效_Jenkins_15


docker jekins部署maven项目 docker中jenkins配置maven不生效_maven_16


docker jekins部署maven项目 docker中jenkins配置maven不生效_docker_17

SSH配置【将jar包发到虚拟机上】

往下拉找到 Publish Over SSH,然后点击新增,开始配置,Hostname 位置填写你服务器的域名或者 IP

docker jekins部署maven项目 docker中jenkins配置maven不生效_docker_18

构建自动化部署

需要注意的是:只有在 Jenkins 中安装了 Maven Integration 插件,才会有【构建一个 maven 项目】的选项

docker jekins部署maven项目 docker中jenkins配置maven不生效_gitee_19


docker jekins部署maven项目 docker中jenkins配置maven不生效_jenkins_20

docker jekins部署maven项目 docker中jenkins配置maven不生效_jenkins_21


注意:如果在安装 git 的时候,设置了保存用户名和密码,那么就不需要配置 【Credentials】 下的登录凭证信息,如果没有保存用户名和密码,就需要设置【Credentials】下的信息,下面是配置【Credentials】的步骤,已经保存账户名和密码可以忽略下面步骤

docker jekins部署maven项目 docker中jenkins配置maven不生效_maven_22


docker jekins部署maven项目 docker中jenkins配置maven不生效_maven_23


docker jekins部署maven项目 docker中jenkins配置maven不生效_jenkins_24


docker jekins部署maven项目 docker中jenkins配置maven不生效_gitee_25


docker jekins部署maven项目 docker中jenkins配置maven不生效_Jenkins_26


GiteeHooks配置

docker jekins部署maven项目 docker中jenkins配置maven不生效_docker_27


docker jekins部署maven项目 docker中jenkins配置maven不生效_docker_28


docker jekins部署maven项目 docker中jenkins配置maven不生效_maven_29

继续构建配置

docker jekins部署maven项目 docker中jenkins配置maven不生效_gitee_30


docker jekins部署maven项目 docker中jenkins配置maven不生效_maven_31

虚拟机需要的东西

1.start.sh脚本

# 源jar路径  
SOURCE_PATH=/usr/local/src/jenkins/workspace/ostomy/target
# Dockerfile路径,不用放在/target目录,因为每一次打包会重置target目录。当然,也可以是其他目录做相应更改
DOCKER_FILE_PATH=/usr/local/src/jenkins/workspace/ostomy   
# 容器id
CID=$(''docker ps | grep "ostomy" | awk '{print $1}''')
echo $CID
# 运行docker容器
function run(){
  echo "开始构建镜像..."
  cd $DOCKER_FILE_PATH
  echo "当前路径如下"
  pwd
  # 构建前判断是否存在镜像,存在则删除
  if [ -n "$CID" ]; then
    echo "存在demo容器,CID=$CID,重启docker容器 ..."
    # 停止容器运行
    sudo docker stop $CID
    # 删除容器
    sudo docker rm $CID
    # 删除镜像
    sudo docker rmi ostomy
    echo "删除镜像和容器成功,下面开始构建新镜像"
  else
    echo "不存在ostomy容器,下面直接开始构建镜像"
  fi
  # 构建镜像
  docker build -t ostomy .
  echo "创建容器成功"
  docker images
  # 杀死特定端口进程
  # mypid=$(netstat -apn|grep 9001|awk '{print $7}'|cut -d/ -f1);
  # echo $mypid
  # kill -9 $mypid
  docker run -d --restart=always --name ostomy -p 8081:8081  ostomy 
}
 
#入口
run

2.Dockerfile脚本

FROM java:8
MAINTAINER xiaobai
WORKDIR  /project
COPY ./target/ostomy.jar /project/ostomy.jar
CMD ["java","-Duser.timezone=Asia/Shanghai","-jar","ostomy.jar","-Dfile.encoding=utf-8"]

构建即可

docker jekins部署maven项目 docker中jenkins配置maven不生效_Jenkins_32

可能遇到的问题

  • Exec exit status not zero. Status [126]
    原因: 对应的.sh 脚本权限不足,修改需执行的脚本权限即可
chmod +777 start.sh