在Google Cloud Run部署Java SpringBoot项目遇权限拒绝问题求助
解决Cloud Run部署Java项目时mvnw权限拒绝问题
问题分析
错误提示fork/exec ./mvnw: permission denied的核心原因是项目中的mvnw脚本缺少可执行权限——即便本地设置了权限,也可能因为Git未追踪权限变更、Cloud Build环境配置等问题导致失效。
解决方案
1. 让Git追踪mvnw的可执行权限
Git默认不会追踪文件的执行权限变更,需要手动指定:
- 本地终端执行:
chmod +x mvnw git update-index --chmod=+x mvnw - 提交并推送到GitHub:
git add mvnw git commit -m "Add executable permission to mvnw" git push
2. 在Cloud Build步骤中提前设置权限
修改你的cloudbuild.yaml,添加一个前置步骤给mvnw赋予权限:
steps: - name: 'ubuntu' args: ['chmod', '+x', './mvnw'] - name: 'gcr.io/cloud-builders/mvn' args: ['clean', 'install', '-DskipTests'] - name: 'gcr.io/cloud-builders/gcloud' args: ['run', 'deploy', 'favdoctorapi', '--image', 'gcr.io/$PROJECT_ID/favdoctorapi', '--platform', 'managed', '--region', 'us-central1'] dir: './'
3. 强制行尾格式为LF
在项目根目录创建或修改.gitattributes文件,添加以下内容避免行尾格式干扰脚本执行:
mvnw text eol=lf *.sh text eol=lf
提交并推送该文件到仓库。
4. 跳过mvnw,直接使用Maven镜像命令
如果上述方法都无效,可以放弃使用项目中的mvnw,直接用Cloud Build Maven镜像自带的mvn命令:
steps: - name: 'gcr.io/cloud-builders/mvn' args: ['clean', 'install', '-DskipTests', '-f', 'pom.xml'] - name: 'gcr.io/cloud-builders/gcloud' args: ['run', 'deploy', 'favdoctorapi', '--image', 'gcr.io/$PROJECT_ID/favdoctorapi', '--platform', 'managed', '--region', 'us-central1'] dir: './'
内容的提问来源于stack exchange,提问作者Ayodeji Adebola
相关产品推荐
相关产品推荐

