如何在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并验证持久化
- 在Azure Portal创建Linux容器类型的App Service,选择「Docker容器」作为发布方式
- 在「容器设置」里选择你的自定义镜像来源(ACR/Docker Hub),填写镜像地址和访问凭据
- 启动App Service后,完成Jenkins初始化:安装插件、创建测试任务、修改系统配置
- 重启App Service,再次登录Jenkins——如果之前的配置、插件、任务都完好无损,说明持久化生效了
额外提醒
- 注意App Service的存储容量限制,不同定价层的配额不一样,Jenkins数据量大的话要选合适的层级
- 后续更新镜像时,一定要保证新镜像的
JENKINS_HOME还是指向/home/jenkins_home,不然会出现数据路径不匹配的问题
内容的提问来源于stack exchange,提问作者anschoewe
相关产品推荐
相关产品推荐

