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

Cloud Run挂载Secret Manager密钥时JSON文件被识别为目录而非文件的问题求助

Cloud Run挂载Secret Manager密钥时JSON文件被识别为目录而非文件的问题求助

大家好,我最近在使用Cloud Run搭配Secret Manager时遇到了一个棘手的问题,想请各位帮忙看看。

我们的需求是将两个Secret Manager中的密钥以仅文件的方式挂载为卷。下面是Cloud Run的配置YAML:

volumeMounts:
- name: secret-2f1d5ec9-d681-4b0f-8a77-204c5f853330
  readOnly: true
  mountPath: /root/key/mtls/client_auth.p12
- name: secret-29c1417a-d9fe-4c37-8cb0-562c97f3c827
  readOnly: true
  mountPath: /root/key/firebase/myapp-d2a0f-firebase-adminsdk-irfes-a699971a4d.json

volumes:
- name: secret-2f1d5ec9-d681-4b0f-8a77-204c5f853330
  secret:
    secretName: myapp_mtls_key
    items:
    - key: latest
      path: myapp_mtls_key
- name: secret-29c1417a-d9fe-4c37-8cb0-562c97f3c827
  secret:
    secretName: myapp_firebase_token
    items:
    - key: latest
      path: myapp_firebase_token

目前的情况是:mtls的p12密钥文件能正常挂载成文件,但Firebase的JSON密钥却被识别成了目录,导致应用抛出以下错误:

java.io.FileNotFoundException: /root/key/firebase/myapp-d2a0f-firebase-adminsdk-irfes-a699971a4d.json (Is a directory)
at java.base/java.io.FileInputStream.open0(Native Method)
at java.base/java.io.FileInputStream.open(FileInputStream.java:216)
at java.base/java.io.FileInputStream.<init>(FileInputStream.java:157)
at java.base/java.io.FileInputStream.<init>(FileInputStream.java:111)
at com.myapp.gcp.GCPInit.init(GCPInit.java:39)

我了解按照Docker的惯例,如果主机路径对应的文件不存在,挂载时会被创建成目录,但在Cloud Run的场景下,我们完全没法控制主机端的路径或文件状态,所以我怀疑这会不会是Cloud Run的一个Bug?

另外,我们已经在本地Docker容器中测试了相同的卷挂载逻辑,一切都正常运行,所以可以确定不是我们的应用代码出了问题。

如果有朋友遇到过类似的问题,或者有相关的排查思路,麻烦指点一下,非常感谢!

备注:内容来源于stack exchange,提问作者Ravi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 12:02:37