Jenkins 的搭建(容器化)---拉取代码-打包-部署

1、制作 jenkins 镜像 内含(jdk maven git node docker 环境)

1、准备 jdk maven node 包

1、jdk1.8.0_192-amd64.tar.gz

2、apache-maven-3.6.3-bin.tar.gz

3、node-v10.15.3-linux-x64.tar.gz

2、准备jenkins 基础镜像

官方提供的 jenkins 镜像(内含jdk git 环境):

jenkins/jenkins:latest

当安装node 和maven 环境后 jdk 环境就莫名不生效了,所以又重新配置了jdk 环境

3、开始制作jenkins镜像配置jdk maven node ,sudo docker 环境

1、开始使用伪命名进入容器内部配置所需环境 (这里指定以root 用户权限)

docker run -it -u root jenkins/jenkins:latest /bin/bash

2、进入后开始配置所需环境 在容器外部操作 将宿主机上的 jdk maven node 包 复制到 此容器内部

docker cp 宿主机路径 容器id:容器内部路径

jdk

docker cp /root/wenjian/java/jdk1.8.0_192-amd64  4b6b584c63e0:/usr/bin/jdk1.8.0_192-amd64

maven

docker cp /root/wenjian/maven/apache-maven-3.6.3 4b6b584c63e0:/usr/bin/apache-maven-3.6.3 

node

docker cp /root/wenjian/npm/node-v10.15.3-linux-x64 4b6b584c63e0:/usr/bin/node-v10.15.3-linux-x64 

3、宿主机文件拷贝成功之后 开始配置环境变量

在容器内部操作

jdk

echo " ">>/etc/profile
echo "# Made for jdk env by hegs on $(date +%F)">>/etc/profile
echo 'export JAVA_HOME=/usr/bin/jdk1.8.0_192-amd64'>>/etc/profile
echo 'export PATH=$JAVA_HOME/bin:$PATH'>>/etc/profile
echo 'export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.ja'>>/etc/profile

node

echo " ">>/etc/profile
echo "# Made for npm env by hegs on $(date +%F)">>/etc/profile
echo 'NODE_HOME=/usr/bin/node-v10.15.3-linux-x64'>>/etc/profile
echo 'export NODE_HOME'>>/etc/profile
echo 'export PATH=${PATH}:${NODE_HOME}/bin'>>/etc/profile

maven

echo " ">>/etc/profile
echo "# Made for maven env by hegs on $(date +%F)">>/etc/profile
echo 'export MAVEN_HOME=/usr/bin/apache-maven-3.6.3'>>/etc/profile
echo 'export PATH=$MAVEN_HOME/bin:$PATH'>>/etc/profile

4、环境变量配置完成之后执行命名即时生效环境变量与验证

1、开始即时刷新配置文件

source /etc/profile

2、由于每次启动容器后都需要进入到容器内部手动执行 source /etc/profile 命令 进行刷新配置文件,否则配置的环境变量将不能够生效

所以需要执行以下命令解决

echo " ">>~/.bashrc
echo 'source /etc/profile'>>~/.bashrc

3、验证环境变量配置是否成功

java -verison     node -v       mvn -v    git   

4、安装sudo 命令 和配置 sudo docker 命令

1、查看当前容器内的内核版本

可以使用cat命令查看容器版本。

cat 命令用于连接文件并打印到标准输出设备上。

具体命令如:

root@0201d7e11f88:/# cat /etc/issue
Debian GNU/Linux 11 \n \l

通过查看容器版本查看和配置对应的镜像加速地址 阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区

2、配置 Debian 镜像加速地址

先备份文件/etc/apt/sources.list

cp /etc/apt/sources.list /etc/apt/sources.list.bak 如果出错可以还原: cp /etc/apt/sources.list.bak /etc/apt/sources.list

2.1、添加镜像地址

echo 'deb http://mirrors.aliyun.com/debian/ bullseye main non-free contrib'>>/etc/apt/sources.list
echo 'deb-src http://mirrors.aliyun.com/debian/ bullseye main non-free contrib'>>/etc/apt/sources.list
echo 'deb http://mirrors.aliyun.com/debian-security/ bullseye-security main'>>/etc/apt/sources.list
echo 'deb-src http://mirrors.aliyun.com/debian-security/ bullseye-security main'>>/etc/apt/sources.list
echo 'deb http://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib'>>/etc/apt/sources.list
echo 'deb-src http://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib'>>/etc/apt/sources.list
echo 'deb http://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib'>>/etc/apt/sources.list
echo 'deb-src http://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib'>>/etc/apt/sources.list

镜像修改后一定要更新

apt-get update

安装 sudo 命令

apt-get install sudo

接下来配置 sudo docker 命令

chmod u+w /etc/sudoers       # 给 /etc/sudoers 设置可以修改的权限         
vim /etc/sudoers
chmod u-w /etc/sudoers       #修改完成过后恢复原来的权限

# 打开 /etc/sudoers 文件,找到 "secure_path" 一行 添加docker环境变量
vim  /etc/sudoers 

4、制作jenkins 镜像成功以后需要重新上传(commit)为一个新的镜像

使用命令进行上传提交新制作的jenkins 镜像

docker commit be796f0a29b1  rxl.hub:5000/rxlcloud/jenkins:1.0

上传提交以后查看是否有提交的镜像

docker images 

5、commit 成功后开始 运行jenkins

1、需要写dockerfile 重新制作的jenkins 镜像需要指定运行命令

执行 vim jenkins.Dockerfile

jenkins.Dockerfile

FROM rxl.hub:5000/rxlcloud/jenkins:1.0
MAINTAINER rxl
ENTRYPOINT ["/sbin/tini","--","/usr/local/bin/jenkins.sh"]

ENTRYPOINT 中的指令根据上面官方提供的jenkins/jenkins 基础镜像决定 可通过 docker inspect 查看

2、开始根据jenkins.Dockerfile 构建镜像

docker build -t rxl.hub:5000/rxlcloud/jenkins-running:1.0 -f jenkins.Dockerfile .

3、构建成功开始运行此镜像

并且映射了宿主机的docker环境(宿主机 which docker 查看) 所以此jenkins 也可以使用docker 命令

docker run -d -p 8081:8080 -p 50000:50000 -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v /jenkins:/var/jenkins_home   rxl.hub:5000/rxlcloud/jenkins-running:1.0

会将 jenkins_home 挂载到此宿主机的 /jenkins 目录

6、访问jenkins

101.132.174.238:8081

1、进入jenkins 页面后需要勾选此按钮 否侧会报跨域请求错

2、jenkins 配置jdk maven node 环境变量

JAVA_HOME
/usr/bin/jdk1.8.0_192-amd64

MAVEN_HOME
/usr/bin/apache-maven-3.6.3

使用 echo $PATH 查看path 值 
PATH               
/usr/bin/jdk1.8.0_192-amd64/bin:/usr/bin/apache-maven-3.6.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/node-v10.15.3-linux-x64/bin

配置完成后可以通过流水线正常测试 jdk maven node 环境变量是否正常

pipeline {
    agent any

    stages {
        stage('Hello') {
            steps {
              
                 sh 'java  -version'

            }
        }
    }
}

2、通过jenkins-base.tar 搭建jenkins

解压jenkins-base.tar 默认

docker load -i jenkins-base.tar

查看解压镜像

docker images

由于是使用了宿主机上的docker命令,所以需要根据宿主机上的docker 环境 进行配置 docker 映射路径(docker run 时指定)、sudo docker 命令

进入解压后的容器内部:docker run -it 镜像id /bin/bash

查看 sudo docker 命令的配置 是否和宿主机上的docker 环境一致

查看配置 sudo docker 命令 (默认配置 /usr/bin/docker,如果不一致需要修改)

cat  /etc/sudoers  
打开 /etc/sudoers 文件,找到 "secure_path" 一行 查看配置宿主机docker环境变量是否正确

Defaults   secure_path = /usr/bin/docker:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin:/root/bin:/root/bin

可以在宿主机上使用which docker 查看docker 环境变量  
[root@iZuf6go6c07h3qmelx3lapZ ~]# which docker
/usr/bin/docker

如果不一致需要重新配置 /etc/sudoers

chmod u+w /etc/sudoers       # 给 /etc/sudoers 设置可以修改的权限         
vim /etc/sudoers
chmod u-w /etc/sudoers       #修改完成过后恢复原来的权限

# 打开 /etc/sudoers 文件,找到 "secure_path" 一行 添加docker环境变量
vim  /etc/sudoers 

如果配置不一致修改后配置完成,需要重新构建这个基础镜像

docker commit 容器id  镜像名称:tag
docker commit 容器id  rxl.hub:5000/rxlcloud/jenkins-base:2.0

通过jenkins.Dockerfile构建 jenkins 新镜像

docker build -t   rxl.hub:5000/rxlcloud/jenkins-running:1.0    -f   jenkins.Dockerfile .

jenkins.Dockerfile

FROM rxl.hub:5000/rxlcloud/jenkins-base:2.0
MAINTAINER rxl
ENTRYPOINT ["/sbin/tini","--","/usr/local/bin/jenkins.sh"]

开始运行jenkins 并且映射了宿主机的docker环境 (根据宿主机docker环境 来映射) 所以此jenkins 也可以使用docker 命令

docker run -d -p 8081:8080 -p 50000:50000 -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v /jenkins:/var/jenkins_home   rxl.hub:5000/rxlcloud/jenkins-running:1.0

访问步骤同上配置jenkins 步骤同上

npm切换访问源地址,以及node-sass安装

修改下载地址为淘宝镜像

npm config set registry https://registry.npm.taobao.org/

设置node-sass地址的变量

npm config set sass_binary_site https://npm.taobao.org/mirrors/node-sass/

Docker时区不一致问题 本地时间相差8个小时

容器内部创建Asia时区文件

echo Asia/Shanghai >/etc/timezone

1、复制Shanghai 时间文件到docker容器下

docker cp /usr/share/zoneinfo/Asia/Shanghai 【容器ID】:/etc/localtime

2、重启docker容器

docker restart 【容器ID】

时区问题:

1.docker-compose配置卷挂载

volumes: - /usr/share/zoneinfo/Asia/Shanghai : /etc/localtime

2.Dockerfile运行命令以及输出对应时区到timezone中

RUN echo  "Asia/shanghai"  > /etc/timezone
RUN cp  /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值