触发Google Cloud Build时提示Python未找到的问题求助
解决Cloud Build中执行
mvn appengine:deploy时出现python: not found的问题 问题原因
你使用的maven:3-eclipse-temurin-17-alpine是基于Alpine Linux的镜像,该镜像默认未预装Python,且Google Cloud SDK的安装脚本会查找python命令——而Alpine中即使安装Python,默认命令也是python3,这就导致了脚本执行失败。
解决方案(两种可选)
方案一:在Alpine镜像中补充Python环境
修改cloudbuild.yaml中执行appengine:deploy的步骤,先安装Python3并创建python软链接,再执行Maven命令:
steps: - name: maven:3-eclipse-temurin-17-alpine entrypoint: mvn args: [ "test" ] - name: maven:3-eclipse-temurin-17-alpine entrypoint: sh args: - -c - | apk add --no-cache python3 && ln -sf python3 /usr/bin/python mvn package -Dmaven.test.skip=true appengine:deploy - name: gcr.io/cloud-builders/docker args: [ "build", "-t", "gcr.io/$PROJECT_ID/backend", "--build-arg=JAR_FILE=target/backend-0.0.1.jar", "." ] images: [ "gcr.io/$PROJECT_ID/backend" ]
方案二:改用Cloud Build官方gcloud镜像部署
放弃通过Maven插件下载gcloud SDK,直接使用Cloud Build提供的gcr.io/cloud-builders/gcloud镜像完成App Engine部署,该镜像已预配置好完整的gcloud环境:
steps: - name: maven:3-eclipse-temurin-17-alpine entrypoint: mvn args: [ "test" ] - name: maven:3-eclipse-temurin-17-alpine entrypoint: mvn args: [ "package", "-Dmaven.test.skip=true" ] # 用官方gcloud镜像部署App Engine - name: gcr.io/cloud-builders/gcloud args: [ "app", "deploy", "app.yaml" ] - name: gcr.io/cloud-builders/docker args: [ "build", "-t", "gcr.io/$PROJECT_ID/backend", "--build-arg=JAR_FILE=target/backend-0.0.1.jar", "." ] images: [ "gcr.io/$PROJECT_ID/backend" ]
注意:使用此方案时,确保你的项目根目录存在正确配置的
app.yaml文件,否则部署会失败。
额外说明
方案二更推荐,因为官方gcloud builder镜像维护更稳定,能避免后续因环境依赖缺失导致的其他问题,同时也更符合Cloud Build的最佳实践。
内容的提问来源于stack exchange,提问作者jupper
相关产品推荐
相关产品推荐

