Dockerfile自建jenkins镜像

Dockerfile

bash 复制代码
FROM centos:centos7

WORKDIR /etc/yum.repos.d

RUN mkdir bak && mv ./*.repo bak/; \
    curl -o CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo; \
    sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo; \
    yum -y install epel-release.noarch bash-completion net-tools wget unzip  git freetype fontconfig; \
    mkdir /root/jenkins

WORKDIR /usr/local/

ADD ./apache-maven-3.9.5-bin.zip ./
ADD ./apache-ant-1.10.14-bin.tar.gz ./
ADD ./jdk-8u212-linux-x64.tar.gz ./

RUN unzip apache-maven-3.9.5-bin.zip


ENV MAVEN_HOME=/usr/local/apache-maven-3.9.5 \
    JAVA_HOME=/usr/local/jdk1.8.0_212 \
    CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/ \
    ANT_HOME=/usr/local/apache-ant-1.10.14 \
    PATH=${MAVEN_HOME}/bin:${ANT_HOME}/bin:${JAVA_HOME}/bin:${PATH}

RUN echo 'export PATH="${MAVEN_HOME}/bin:${ANT_HOME}/bin:${JAVA_HOME}/bin:${PATH}"' >> ~/.bashrc


WORKDIR /root/jenkins

COPY ./jenkins.war ./ 
COPY ./jenkins.sh  ./
COPY ./checkstyle-10.12.4-all.jar ./
COPY ./change_file/myConf.tar ./
COPY ./change_file/plugins.tar ./
COPY ./change_file/tools.tar ./

EXPOSE 8080
ENTRYPOINT [ "/bin/bash", "/root/jenkins/jenkins.sh" ]

jenkins.sh

bash 复制代码
#!/bin/bash
source /root/.bashrc
cd /root/jenkins && nohup java -jar -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true ./jenkins.war  &
sleep 5
pkill java 

tar -xf myConf.tar -C /root/.jenkins/
tar -xf plugins.tar -C /root/.jenkins/
tar -xf tools.tar -C /root/.jenkins/

java -jar -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true ./jenkins.war
bash 复制代码
docker build -t jenkins_test:2.190.2 .
docker commit -a jx -m 'jenkins_test' focused_vaughan my_jenkins:test

docker-compose.yml

bash 复制代码
version: '3'
services:
  jenkins:
    user: root
    restart: always
    image: devops_jenkins:2.190.2
    hostname: jenkins
    privileged: true
    container_name: jenkins
    networks:
      - jenkins
    environment:
      - LANG=en_US.utf8
      - TZ=Asia/Shanghai
    ports:
      - 8088:8080
      - 50000:50000
    volumes:
      - jenkins_home:/root/.jenkins
      - mvn_repository:/root/.m2/repository
      - mvn_conf:/usr/local/apache-maven-3.9.5/conf
    logging:
        options:
          max-size: "128M"
          max-file: "1"
    healthcheck:
         test: ["CMD","curl","-s","-f","http://localhost:50000"]
         interval: 30s
         timeout: 10s
         retries: 10
networks:
  jenkins:
volumes:
  jenkins_home:
  mvn_repository:
  mvn_conf:
相关推荐
林姜泽樾14 分钟前
Linux入门第十二章,创建用户、用户组、主组附加组等相关知识详解
linux·运维·服务器·centos
xiaokangzhe41 分钟前
Linux系统安全
linux·运维·系统安全
xiaokangzhe1 小时前
Nginx核心功能
运维·nginx
松果1771 小时前
以本地时钟为源的时间服务器
运维·chrony·时间服务器
Highcharts.js2 小时前
Highcharts React v4.2.1 正式发布:更自然的React开发体验,更清晰的数据处理
linux·运维·javascript·ubuntu·react.js·数据可视化·highcharts
青木9602 小时前
封装成开箱即用的docker
docker·容器
ayaya_mana2 小时前
快速安装Nginx-UI:让Nginx管理可视化的高效方案
运维·nginx·ui
爱丽_2 小时前
Docker 从原理到项目落地(镜像 / 容器 / 网络 / 卷 / Dockerfile)
网络·docker·容器
janthinasnail3 小时前
Docker镜像源加速器
docker·docker镜像源
Johnstons4 小时前
读懂 TCP 标志位:网络运维中的“信号灯”
运维·网络·tcp/ip