103 lines
3.0 KiB
Docker
Raw Permalink Normal View History

# 基于官方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