# 基于官方Jenkins镜像 FROM jenkins/jenkins:2.426.1-lts # 切换到root用户安装软件 USER root # 设置时区 ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # 更新包管理器并安装必要工具 RUN apt-get update && apt-get install -y \ openjdk-17-jdk \ maven \ curl \ wget \ git \ sshpass \ vim \ unzip \ && rm -rf /var/lib/apt/lists/* # 设置JDK环境变量 ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 ENV PATH=$JAVA_HOME/bin:$PATH # 配置Maven镜像加速(使用阿里云镜像) RUN mkdir -p /root/.m2 && \ echo '' > /root/.m2/settings.xml && \ echo '> /root/.m2/settings.xml && \ echo ' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"' >> /root/.m2/settings.xml && \ echo ' xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">' >> /root/.m2/settings.xml && \ echo ' ' >> /root/.m2/settings.xml && \ echo ' ' >> /root/.m2/settings.xml && \ echo ' aliyunmaven' >> /root/.m2/settings.xml && \ echo ' *' >> /root/.m2/settings.xml && \ echo ' 阿里云公共仓库' >> /root/.m2/settings.xml && \ echo ' https://maven.aliyun.com/repository/public' >> /root/.m2/settings.xml && \ echo ' ' >> /root/.m2/settings.xml && \ echo ' ' >> /root/.m2/settings.xml && \ echo '' >> /root/.m2/settings.xml # 验证Java和Maven安装 RUN java -version && mvn -version # 安装Docker CLI(用于Docker in Docker) RUN curl -fsSL https://get.docker.com -o get-docker.sh && \ sh get-docker.sh && \ rm get-docker.sh # 将jenkins用户添加到docker组 RUN usermod -aG docker jenkins # 创建jenkins用户的Maven配置 RUN mkdir -p /var/jenkins_home/.m2 && \ cp /root/.m2/settings.xml /var/jenkins_home/.m2/ && \ chown -R jenkins:jenkins /var/jenkins_home/.m2 # 切换回jenkins用户 USER jenkins # 预安装核心插件(企业级CI/CD必备) RUN jenkins-plugin-cli --plugins \ maven-integration-plugin \ jacoco \ sonar \ docker-workflow \ docker-plugin \ ssh-agent \ credentials-binding \ git \ github \ workflow-aggregator \ pipeline-stage-view \ blueocean \ build-timeout \ timestamper \ ws-cleanup \ ant \ gradle \ nodejs \ publish-over-ssh \ email-ext \ slack \ build-monitor-plugin \ role-strategy \ ldap \ matrix-auth \ configuration-as-code \ job-dsl # 复制预配置文件 COPY jenkins-config/ /var/jenkins_home/ # 设置Jenkins启动选项 ENV JAVA_OPTS="-Djenkins.install.runSetupWizard=false -Xmx2048m -Duser.timezone=Asia/Shanghai" ENV JENKINS_OPTS="--httpPort=8080" # 设置Jenkins配置文件权限 USER root RUN chown -R jenkins:jenkins /var/jenkins_home/ USER jenkins