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:
相关推荐
昵称为空C5 分钟前
Spring Boot 项目docker分层镜像构建案例
spring boot·ci/cd·docker
BullSmall10 分钟前
linux 根据端口查看进程和对应的应用
linux·运维
kali-Myon10 分钟前
快速解决 Docker 环境中无法打开 gdb 调试窗口以及 tmux 中无法滚动页面内容和无法选中复制的问题
运维·安全·docker·容器·gdb·pwn·tmux
阿阿越15 分钟前
Linux系统编程 -- 进程优先级、切换和调度
linux·运维·服务器
Hey小孩18 分钟前
Linux审计组件:auditd
linux·运维
wanhengidc38 分钟前
云手机存在哪些技术瓶颈
运维·服务器·安全·智能手机·生活
管理大亨41 分钟前
ELK + Redis Docker 企业级部署落地方案
大数据·运维·elk·elasticsearch·docker·jenkins
德迅云安全—珍珍1 小时前
物理服务器、云服务器、裸金属服务器的区别
运维·服务器
好记忆不如烂笔头abc1 小时前
超微服务器的ipmi调整风扇运行模式
运维·服务器
一个响当当的名号1 小时前
ASP.NET 期末突击
运维·服务器