如何用Docker Compose部署预装Git的Jenkins代理节点
解决Jenkins代理节点预装Git的问题
有两种靠谱的方式可以实现部署时自动预装Git,不用手动操作:
一、自定义镜像(推荐长期使用)
官方jenkins/ssh-agent:jdk11镜像未预装Git,你可以基于它构建一个包含Git的自定义镜像,后续启动容器直接就能用,不用重复安装。
- 新建
Dockerfile文件,内容如下:
FROM jenkins/ssh-agent:jdk11 USER root # 更新源并安装Git,最后清理apt缓存减小镜像体积 RUN apt-get update && apt-get install -y git-all && rm -rf /var/lib/apt/lists/* # 切回jenkins用户,保持镜像权限规范 USER jenkins
- 执行命令构建自定义镜像(示例命名为
my-jenkins-ssh-agent:jdk11-git):
docker build -t my-jenkins-ssh-agent:jdk11-git .
- 修改Docker Compose配置,将
image字段替换为你刚构建的自定义镜像:
jenkins_barcelona_node: image: my-jenkins-ssh-agent:jdk11-git # 替换为自定义镜像 privileged: true user: root group_add: - "998" depends_on: - jenkins <-- Master Node - reverse-proxy container_name: barcelona restart: "always" hostname: barcelona networks: - akogare-net expose: - 22 environment: - JENKINS_AGENT_SSH_PUBKEY=ssh-rsa...... volumes: - barcelona-data:/var/barcelona_home - /usr/bin/docker:/usr/bin/docker - /var/run/docker.sock:/var/run/docker.sock
二、临时方案(容器启动时自动安装,不推荐长期使用)
如果不想构建镜像,也可以在Docker Compose中添加启动命令,让容器启动时自动安装Git。但这个方案每次容器重启都会重复执行安装,效率较低,适合临时测试场景。
修改Docker Compose配置,添加command字段:
jenkins_barcelona_node: image: jenkins/ssh-agent:jdk11 privileged: true user: root group_add: - "998" depends_on: - jenkins <-- Master Node - reverse-proxy container_name: barcelona restart: "always" hostname: barcelona networks: - akogare-net expose: - 22 environment: - JENKINS_AGENT_SSH_PUBKEY=ssh-rsa...... volumes: - barcelona-data:/var/barcelona_home - /usr/bin/docker:/usr/bin/docker - /var/run/docker.sock:/var/run/docker.sock # 先安装Git,再启动SSH服务(原镜像的核心启动命令必须保留) command: bash -c "apt-get update && apt-get install -y git-all && /usr/sbin/sshd -D"
内容的提问来源于stack exchange,提问作者Tristate
相关产品推荐
相关产品推荐

