docker安装jenkins运行mavne编译打包项目

踩坑记录

docker pull jenkins之后是只有单纯的jenkins镜像,没有jdk,maven,docker宿主机的命令挂载,导致jenkins 在编译java项目的时候报各种错误。

两种方式:

已经安装好jenkins,但是没有挂载宿主机docker,没有挂载jdk,maven环境

本地下载maven对应版本
链接:
mavne和jdk
提取码:0814

本地下载jdk对应版本
解压maven并通过上传到服务器指定目录
解压完之后修改mavenconfig里面的setting.xml文件,把里面的仓库源改为阿里的

<mirror>
  <id>aliyunmavenid>
  <mirrorOf>*mirrorOf>
  <name>阿里云公共仓库name>
  <url>https://maven.aliyun.com/repository/publicurl>
mirror>

解压jdk并通过上传到服务器指定目录
通过docker cp 命令把宿主机的本地文件copy到容器指定路径

docker cp /usr/maven3.6.1 jenkins:/usr/maven.3.6 
docker cp /usr/jdk1.8 jenkins:/usr/jdk1.8

copy之后进入容器内部查看

docker exec -it jenkins /bin/bash

可能会报没有权限的错误

chown -R 1000:1000 /home/jenkins #看你给jekins的权限是777还是什么,修改对应用户的权限就可以

在jenkins 里面无法使用宿主机docker 命令

docker cp  /var/run/docker.sock jenkins:/var/run/docker.sock  /usr/bin/docker jenkins:/usr/bin/docker


chmod a+rw /var/run/docker.sock #如果有权限问题可以执行这个

如果cp命令没有效果的话,可以stop停止当前容器,并重新run,并挂载宿主机的docker.sock命令

docker run --privileged --name='test_triton_jason' -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -itd your-images bash

执行完这些,我们可以看到我们的jenkins是可以编译java项目了。

注意在jenkins配置

docker安装jenkins运行mavne编译打包项目_第1张图片
docker安装jenkins运行mavne编译打包项目_第2张图片
docker安装jenkins运行mavne编译打包项目_第3张图片
docker安装jenkins运行mavne编译打包项目_第4张图片
docker安装jenkins运行mavne编译打包项目_第5张图片

配置三个环境变量

JAVA_HOME M2_HOME PATH+EXTRA
配置完成之后执行你自己的流水线就能成功跑起来了。
docker安装jenkins运行mavne编译打包项目_第6张图片
注 jenkins 构建时间显示错误问题
docker安装jenkins运行mavne编译打包项目_第7张图片
在里面添加下面这句话就可以了。

System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')

第二种,在buildjenkins 镜像的时候,提前把jdk,maven,docker.stock提前挂载进去,这样就不需要后期配置,直接启动容器就可以直接运行了,在根据容器内部对应的挂载路径,配置相应的环境变量。

准备dockerfile和sources.list、settings.xml

将dockerfile和sources.list、settings.xml这三文件都放到:/opt/jenkins文件夹下。
settings.xml:






<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  

  

  

  
  <pluginGroups>
    
  pluginGroups>

  
  <proxies>
    
  proxies>

  
  <servers>
    

    
  servers>

  
  <mirrors>
    
	<mirror>
   		<id>alimavenid>
   		<name>aliyun mavenname>
  		<url>http://maven.aliyun.com/nexus/content/groups/public/url>
   		<mirrorOf>centralmirrorOf>
	mirror>
  mirrors>

  
  <profiles>
    

    
  profiles>

  
settings>

sources.list:

deb http://mirrors.aliyun.com/debian/ stretch main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ stretch main non-free contrib
deb http://mirrors.aliyun.com/debian-security stretch/updates main
deb-src http://mirrors.aliyun.com/debian-security stretch/updates main
deb http://mirrors.aliyun.com/debian/ stretch-updates main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ stretch-updates main non-free contrib
deb http://mirrors.aliyun.com/debian/ stretch-backports main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ stretch-backports main non-free contrib

dockerfile

FROM jenkins/jenkins:lts-jdk11
USER root
COPY sources.list /etc/apt/sources.list
# 安装maven
RUN apt-get update && apt-get install -y wget && cd /opt && wget https://mirrors.aliyun.com/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz && tar -zxvf apache-maven-3.6.3-bin.tar.gz
COPY settings.xml /opt/apache-maven-3.6.3/conf/settings.xml
# 加载全局变量
RUN echo "export MAVEN_HOME=/opt/maven/apache-maven-3.6.3">>/etc/profile && echo "export MAVEN_HOME">>/etc/profile && echo 'export PATH=$PATH:$MAVEN_HOME/bin'>>/etc/profile && ln -s /opt/maven/apache-maven-3.6.3/bin/mvn /usr/bin/
# 安装jdk1.8.0_201
RUN cd /opt && wget https://repo.huaweicloud.com/java/jdk/8u201-b09/jdk-8u201-linux-x64.tar.gz && tar -zxvf jdk-8u201-linux-x64.tar.gz
RUN echo 'export JAVA_HOME=/opt/jdk1.8.0_201'>>/etc/profile && echo 'export JRE_HOME=\${JAVA_HOME}/jre'>>/etc/profile && echo 'export CLASSPATH=.:\${JAVA_HOME}/lib:\${JRE_HOME}/lib'>>/etc/profile && echo 'export PATH=\${JAVA_HOME}/bin:\$PATH'>>/etc/profile
RUN /bin/bash -c "source /etc/profile"
USER jenkins

build镜像

[root@centos jenkins]# docker build -f dockerfile .
[root@centos jenkins]# docker images
REPOSITORY                                                                TAG         IMAGE ID       CREATED         SIZE
<none>                                                                    <none>      da60997e77e4   8 minutes ago   1.11GB
[root@centos jenkins]# docker tag da60997e77e4 my-jenkins

运行容器

[root@centos jenkins]# docker volume create jenkins-volume
[root@centos jenkins]# docker run -d --name jenkins -u root -p 8888:8080 -p 50000:50000 --privileged=true  -v jenkins-volume:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker my-jenkins:latest

然后就是初始化jenkins
接着配置环境变量就可以了。

你可能感兴趣的:(docker,jenkins,docker,运维)