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

Minikube部署Bitbucket Data Center:共享目录无写入权限问题

解决Minikube上Bitbucket Data Center挂载卷的权限启动失败问题

问题分析

你遇到的启动失败核心原因有两个:

  • Deployment配置里重复定义了volumeMounts字段,第二个volumeMounts会覆盖第一个,导致主存储卷bitb-storage根本没挂载到Bitbucket Home目录,直接引发后续目录权限混乱。
  • 当用subPath挂载configMap到/shared/bitbucket.properties时,如果shared目录不存在,Kubernetes会自动以root权限创建它,而Bitbucket进程是以bitbucket用户运行的,自然没有这个目录的写入权限。

另外你提到Init Container阶段bitbucket用户还没创建,这个问题可以绕开——Atlassian官方的Bitbucket镜像里,bitbucket用户的UID和GID是固定的2001:2001,直接用这个UID/GID修改权限就行,不用依赖用户存在。

修复方案

1. 修正Deployment语法错误

把两个独立的volumeMounts合并成一个数组,确保主存储卷和configMap都能正常挂载。

2. 添加Init Container预配置目录权限

用busybox镜像做Init Container,提前创建shared目录并把权限改成2001:2001,这样Bitbucket启动时就能正常读写这个目录。

修改后的完整Deployment配置

apiVersion: apps/v1
kind: Deployment
metadata:
  name: bitb
spec:
  replicas: 1
  selector:
    matchLabels:
      app: bitb
  template:
    metadata:
      labels:
        app: bitb
    spec:
      initContainers:
        - name: fix-shared-perms
          image: busybox:1.36
          command:
            - sh
            - -c
            - |
              # 创建shared目录(如果不存在)
              mkdir -p /var/atlassian/application-data/bitbucket/shared
              # 递归修改目录权限为Bitbucket运行用户的UID/GID
              chown -R 2001:2001 /var/atlassian/application-data/bitbucket/shared
          volumeMounts:
            - name: bitb-storage
              mountPath: "/var/atlassian/application-data/bitbucket"
      containers:
        - name: bitb
          image: atlassian/bitbucket:8.16.4
          volumeMounts:
            # 合并后的volumeMounts,同时挂载主存储和configMap
            - name: bitb-storage
              mountPath: "/var/atlassian/application-data/bitbucket"
            - name: bitb-properties
              mountPath: "/var/atlassian/application-data/bitbucket/shared/bitbucket.properties"
              subPath: "bitbucket.properties"
          env:
            - name: BITBUCKET_HOME
              value: "/var/atlassian/application-data/bitbucket"
      volumes:
        - name: bitb-storage
          persistentVolumeClaim:
            claimName: bitb
        - name: bitb-properties
          configMap:
            name: properties

关键说明

  • Init Container先于Bitbucket容器启动,挂载主存储卷后创建shared目录并设置正确权限,Bitbucket启动时直接就能读写这个目录,不会出现权限报错。
  • 修正volumeMounts的语法错误后,主存储卷能正常挂载,确保Bitbucket Home目录的所有数据都存在PV里,同时configMap的挂载也能正常生效,保留部署自愈的能力。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 14:41:01