Jenkins-通过自定义Dockerfile来配置一些环境


之前用Jenkins时用的官方的镜像,还需要进行一些配置,这里结合平常使用,分享一下Dockerfile

Jenkinsfile 使用 脚本化的,比较易上手~

这里我已配置好的环境为:

  1. jdk,使用openjdk8 (jenkins/jenkins:lts 中已有,不过需要用 jenkins用户才能用的到,可以用 -u root 来测试 jenkins用户的环境变量配置)
  2. maven ,这里用的是 3.6.3,已配置成阿里云源
  3. node ,安装了 12.14.0

这里这样做的话,在Jenkinsfile中可以直接使用

示例

node {
     checkout scm

     stage('maven打包') {
         sh 'mvn -U clean package assembly:assembly -Dmaven.test.skip=true'
     }
 }
node {
    checkout scm

    stage('npm install') {
      sh 'npm config set registry https://registry.npm.taobao.org'
      sh 'cd escheduler-ui && npm install && npm run build'
    }

    stage('docker push') {
        sh 'sudo docker build -t titvax/demo:1.0 .'
        sh 'sudo docker tag titvax/demo:1.0 192.168.1.150:8001/titvax/demo:1.0'
        sh 'sudo docker push 192.168.1.150:8001/titvax/demo:1.0'
    }
}

Dockerfile

FROM jenkins/jenkins:lts

USER root

RUN echo "deb http://mirrors.aliyun.com/debian/ stretch main non-free contrib \n\
deb http://mirrors.aliyun.com/debian-security stretch/updates main \n\
deb http://mirrors.aliyun.com/debian/ stretch-updates main non-free contrib \n\
deb http://mirrors.aliyun.com/debian/ stretch-backports main non-free contrib" > /etc/apt/sources.list

RUN apt-get update && \
    apt-get install -y sudo vim && \
    rm -rf /var/lib/apt/lists/*
RUN echo "jenkins ALL=NOPASSWD: ALL" >> /etc/sudoers

RUN cd /opt && \
    wget http://mirrors.tuna.tsinghua.edu.cn/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 && \
    mv apache-maven-3.6.3 maven && \
    rm -rf ./apache-maven-3.6.3-bin.tar.gz
RUN echo '<?xml version="1.0" encoding="UTF-8"?> \n\
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" \n\
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" \n\
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> \n\
<mirrors> \n\
    <mirror> \n\
        <id>alimaven</id> \n\
        <name>aliyun maven</name> \n\
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url> \n\
        <mirrorOf>central</mirrorOf> \n\
    </mirror> \n\
</mirrors> \n\
\n\
</settings>' > /opt/maven/conf/settings.xml    
ENV MAVEN_HOME=/opt/maven
ENV PATH $PATH:$MAVEN_HOME/bin

RUN cd /opt && \
    wget https://nodejs.org/dist/v12.14.0/node-v12.14.0-linux-x64.tar.xz && \
    tar xf node-v12.14.0-linux-x64.tar.xz && \
    mv node-v12.14.0-linux-x64 node && \
    rm -rf ./node-v12.14.0-*tar.xz
    
ENV NODE_HOME=/opt/node
ENV PATH $PATH:$NODE_HOME/bin

RUN echo "jenkins ALL=NOPASSWD: ALL" >> /etc/sudoers

USER jenkins
ENV MAVEN_HOME=/opt/maven
ENV PATH $PATH:$MAVEN_HOME/bin
ENV NODE_HOME=/opt/node
ENV PATH $PATH:$NODE_HOME/bin

构建镜像

这里 -t 后的名称可以自行修改

docker build -t titvax/jenkins:1.0 .

创建容器

需要说明,之前我一直用的 root 用户运行jenkins容器,所以没有权限问题,下面这里用的是 jenkins 用户来运行的,所以要将挂载的目录权限修改为 1000:1000,详见 官方Dockerhub说明

titvax/jenkins:1.0 应与你创建的一致~

export JENKINS_DATA_DIR=/data/jenkins/jenkins_home && \
mkdir -p $JENKINS_DATA_DIR && \
chown -R 1000:1000 $JENKINS_DATA_DIR && \
docker run \
--name jenkins-1 \
-d \
-p 10087:8080 \
-e TZ=Asia/Shanghai \
-v ${JENKINS_DATA_DIR}:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/bin/docker:/usr/bin/docker \
titvax/jenkins:1.0

这里我将 docker 映射进去,但是注意使用时要用 sudo docker

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值