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

将SpringBoot应用部署至Google Cloud App Engine Flex时遇内部错误

解决App Engine Flex部署内部错误(Error Response: [13])问题

问题背景

此前用相同配置和代码成功部署SpringBoot应用到GCP App Engine Flex环境,现在部署时触发内部错误,日志显示实例创建超时,具体错误:

Error Response: [13] Flex operation projects/<project_id>/regions/us-central1/operations/xxx error [INTERNAL]: An internal error occurred while processing task /app-engine-flex/update_flex_deployment/flex_update_instances... Count of updating instances: none:1, creating:1

附带配置文件:

Dockerfile

FROM gcr.io/google-appengine/openjdk:8-2022-09-09-195526
COPY ./app.jar $APP_DESTINATION
ENTRYPOINT [exec java -showversion -agentpath:/opt/cdbg/cdbg_java_agent.so=--log_dir=/var/log/app_engine,--alsologtostderr=true -Xms3276M -Xmx3276M -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:+PrintCommandLineFlags -jar app.jar " ]

app.yaml

runtime: custom
env: flex

runtime_config:
  jdk: openjdk8

handlers:
- url: /.*
  script: this field is required, but ignored
  secure: always

automatic_scaling:
  min_num_instances: 2
  max_num_instances: 3
  cool_down_period_sec: 120
  cpu_utilization:
    target_utilization: 0.6

service: service-agent

network:
  name: <network_name>
  subnetwork_name: <subnet_name>

readiness_check:
  path: '/check/ready'
  check_interval_sec: 30
  timeout_sec: 4
  failure_threshold: 2
  success_threshold: 2
liveness_check:
  path: '/check/live'
  check_interval_sec: 30
  timeout_sec: 4
  failure_threshold: 2
  success_threshold: 2

resources:
  cpu: 4
  memory_gb: 4

排查与解决方案

1. 修复Dockerfile ENTRYPOINT语法错误

当前ENTRYPOINT使用exec数组格式但写法错误,所有参数被当作单个字符串传递,导致容器无法正常启动。正确写法应将每个命令参数拆分为独立字符串:

FROM gcr.io/google-appengine/openjdk:8-2022-09-09-195526
COPY ./app.jar $APP_DESTINATION
ENTRYPOINT [
  "exec", "java",
  "-showversion",
  "-agentpath:/opt/cdbg/cdbg_java_agent.so=--log_dir=/var/log/app_engine,--alsologtostderr=true",
  "-Xms3276M",
  "-Xmx3276M",
  "-XX:+UseG1GC",
  "-XX:+ParallelRefProcEnabled",
  "-XX:+PrintCommandLineFlags",
  "-jar", "app.jar"
]

2. 升级基础镜像至较新版本

使用的gcr.io/google-appengine/openjdk:8-2022-09-09-195526是两年前的旧镜像,可能存在与当前Flex环境的兼容性问题。替换为官方维护的最新OpenJDK 8镜像:

FROM gcr.io/google-appengine/openjdk:8
# 或使用官方OpenJDK镜像
# FROM openjdk:8-jre-slim

3. 验证健康检查端点可用性

部署卡住的核心原因是实例无法通过健康检查,导致部署流程超时:

  • 本地启动应用,确认/check/ready和/check/live端点返回200状态码
  • 检查子网防火墙规则,确保App Engine健康检查服务(IP范围:130.211.0.0/22和35.191.0.0/16)能访问这些端点

4. 临时调整部署参数降低复杂度

  • 先将min_num_instances改为1,减少部署时需要创建的实例数量:
    automatic_scaling:
      min_num_instances: 1
    
  • 使用命令跳过旧版本停止,优先验证新实例是否能启动:
    gcloud app deploy --no-promote --no-stop-previous-version --verbosity=debug
    

5. 查看Cloud Build日志确认镜像构建状态

通过Cloud Build ID a155b963-460a-4eee-b3d4-a812bd17e211查看构建日志,确认镜像是否成功打包、依赖是否完整:

gcloud builds log a155b963-460a-4eee-b3d4-a812bd17e211

6. 检查网络配置权限

确认App Engine服务账号具有子网的roles/compute.networkUser权限,确保实例能正常加入指定子网。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 13:12:03