You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure App Service的Jenkins Docker容器中挂载存储以持久化数据?

在Azure App Service Linux容器中持久化Jenkins数据的解决方案

我之前在Azure App Service上部署Jenkins容器时也碰到过一模一样的问题——默认镜像把数据存在/var/jenkins_home,容器重启就丢配置。后来折腾出一套靠谱的方案,分享给你:

一、调整自定义Jenkins镜像,把数据目录移到/home下

Azure App Service Linux的持久化存储默认挂载在/home目录,所以我们要把Jenkins的数据目录转移到这个路径下。下面是我用的Dockerfile:

# 基于官方的alpine镜像
FROM jenkins/jenkins:2.110-alpine

# 切换到root用户创建新目录并设置权限
USER root
RUN mkdir -p /home/jenkins_home && \
    chown -R jenkins:jenkins /home/jenkins_home
USER jenkins

# 用环境变量指定Jenkins的新数据目录
ENV JENKINS_HOME /home/jenkins_home

# 可选:给原目录建软链,兼容部分硬编码路径的插件
USER root
RUN ln -s /home/jenkins_home /var/jenkins_home
USER jenkins

# 保留原镜像的启动命令
CMD ["jenkins"]

这里的关键点:

  • 必须确保/home/jenkins_home的所有者是jenkins用户(UID一般是1000),否则Jenkins启动会因权限不足报错
  • 软链是为了兼容一些老插件,避免它们找不到原路径的文件

二、构建并推送自定义镜像到容器注册表

把上面的Dockerfile构建成镜像,推送到Azure Container Registry(ACR)或者Docker Hub,方便App Service拉取:

# 构建镜像
docker build -t your-registry/jenkins-custom:2.110-alpine .

# 如果用ACR,先登录再推送
az acr login --name your-acr-name
docker push your-registry/jenkins-custom:2.110-alpine

三、配置App Service并验证持久化

  1. 在Azure Portal创建Linux容器类型的App Service,选择「Docker容器」作为发布方式
  2. 在「容器设置」里选择你的自定义镜像来源(ACR/Docker Hub),填写镜像地址和访问凭据
  3. 启动App Service后,完成Jenkins初始化:安装插件、创建测试任务、修改系统配置
  4. 重启App Service,再次登录Jenkins——如果之前的配置、插件、任务都完好无损,说明持久化生效了

额外提醒

  • 注意App Service的存储容量限制,不同定价层的配额不一样,Jenkins数据量大的话要选合适的层级
  • 后续更新镜像时,一定要保证新镜像的JENKINS_HOME还是指向/home/jenkins_home,不然会出现数据路径不匹配的问题

内容的提问来源于stack exchange,提问作者anschoewe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:49:20