📦 文件结构
jenkins/
├── docker-compose.yml
├── Dockerfile
├── plugins.txt
└── jenkins_home/ # Jenkins 数据目录(自动创建)
1️⃣ docker-compose.yml
services:
jenkins:
build:
context: .
args:
http_proxy: "http://192.168.203.1:7890"
https_proxy: "http://192.168.203.1:7890"
container_name: jenkins
privileged: true # 允许 Docker-in-Docker
user: root
ports:
- "8080:8080"
- "50000:50000"
volumes:
- jenkins_home:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock # 将宿主机 Docker 注入容器
- /usr/local/bin/ossutil:/usr/local/bin/ossutil
- jenkins_ssh:/root/.ssh # 使用 Docker 卷保存 SSH 配置
environment:
- TZ=Asia/Shanghai
restart: unless-stopped
volumes:
jenkins_home:
jenkins_ssh:
2️⃣ Dockerfile
FROM jenkins/jenkins:lts-jdk17
ARG http_proxy
ARG https_proxy
ENV http_proxy=${http_proxy}
ENV https_proxy=${https_proxy}
USER root
# 安装 Docker CLI,Git,Maven,curl 和 Node.js(包含 npm)
RUN apt-get update && \
apt-get install -y docker.io git maven curl ca-certificates && \
curl -sL https://deb.nodesource.com/setup_18.x | bash - && \
apt-get install -y nodejs && \
rm -rf /var/lib/apt/lists/*
# 安装插件(从 plugins.txt)
COPY plugins.txt /usr/share/jenkins/ref/plugins.txt
RUN jenkins-plugin-cli --plugin-file /usr/share/jenkins/ref/plugins.txt
# 设置权限
RUN chown -R jenkins:jenkins /var/jenkins_home
USER jenkins
3️⃣ plugins.txt
这个文件列出你要预装的插件。例如:
git
workflow-aggregator
docker-workflow
pipeline-utility-steps
credentials-binding
ssh-agent
matrix-auth
configuration-as-code
💡 你可以随时扩展插件列表,重建镜像即可。
或者这样
Dockerfile
FROM jenkins/jenkins:lts-jdk17
ARG http_proxy
ARG https_proxy
ENV http_proxy=${http_proxy}
ENV https_proxy=${https_proxy}
USER root
# 安装 Docker CLI,Git,Maven,curl 和 Node.js(包含 npm)
RUN apt-get update && \
apt-get install -y docker.io git maven curl ca-certificates && \
curl -sL https://deb.nodesource.com/setup_18.x | bash - && \
apt-get install -y nodejs && \
rm -rf /var/lib/apt/lists/