103 lines
3.0 KiB
Docker
103 lines
3.0 KiB
Docker
|
# 基于官方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 '<?xml version="1.0" encoding="UTF-8"?>' > /root/.m2/settings.xml && \
|
|||
|
echo '<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"' >> /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 ' <mirrors>' >> /root/.m2/settings.xml && \
|
|||
|
echo ' <mirror>' >> /root/.m2/settings.xml && \
|
|||
|
echo ' <id>aliyunmaven</id>' >> /root/.m2/settings.xml && \
|
|||
|
echo ' <mirrorOf>*</mirrorOf>' >> /root/.m2/settings.xml && \
|
|||
|
echo ' <name>阿里云公共仓库</name>' >> /root/.m2/settings.xml && \
|
|||
|
echo ' <url>https://maven.aliyun.com/repository/public</url>' >> /root/.m2/settings.xml && \
|
|||
|
echo ' </mirror>' >> /root/.m2/settings.xml && \
|
|||
|
echo ' </mirrors>' >> /root/.m2/settings.xml && \
|
|||
|
echo '</settings>' >> /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
|