无法让 Spring Boot 应用程序在 Google Cloud Platform 灵活环境中运行



我在 Google Cloud Platform Flexible 环境中部署 Spring Boot 应用程序时遇到问题。

我运行以下命令进行部署:mvn clean compile package -DskipTests appengine:deploy -P cloud-gcp

我的pom.xml中的cloud-gcp个人资料如下:

<profiles>
<profile>
<id>cloud-gcp</id>
<build>
<plugins>
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<version>beta3</version>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>

这是我位于src/main/appengine/app.yamlapp.yaml文件:

runtime: java
env: flex
runtime_config:
jdk: openjdk8
env_variables:
SPRING_PROFILES_ACTIVE: "gcp"
handlers:
- url: /.*
script: this field is required, but ignored
manual_scaling:
instances: 1
resources:
cpu: 1
memory_gb: 4
disk_size_gb: 10

这是我的application-gcp.properties

server.address=0.0.0.0
server.port=8080
# Datasource
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQL9Dialect
spring.datasource.username=xxx
spring.datasource.password=xxx
spring.datasource.url=jdbc:postgresql://google/xxx?cloudSqlInstance=xxx:europe-west4:xxx&autoReconnect=true&user=xxx&password=xxx&socketFactory=com.google.cloud.sql.postgres.SocketFactory&useSSL=false

server.error.whitelabel.enabled=false
# Optimize start of application
spring.jmx.enabled=false
# Gcp configuration
spring.cloud.gcp.sql.enabled=false
spring.cloud.gcp.sql.database-name=xxx
spring.cloud.gcp.sql.instance-connection-name=xxx:europe-west4:xxx
spring.cloud.gcp.logging.enabled=true

编译成功,没有问题。当我想访问我的 Spring 引导应用程序时,会出现此问题。我经常收到 502 错误。日志中没有任何内容可以让我了解出了什么问题:

A 2020-01-20T16:14:17Z   .   ____          _            __ _ _
A 2020-01-20T16:14:17Z  /\ / ___'_ __ _ _(_)_ __  __ _    
A 2020-01-20T16:14:17Z ( ( )___ | '_ | '_| | '_ / _` |    
A 2020-01-20T16:14:17Z  \/  ___)| |_)| | | | | || (_| |  ) ) ) )
A 2020-01-20T16:14:17Z   '  |____| .__|_| |_|_| |___, | / / / /
A 2020-01-20T16:14:17Z  =========|_|==============|___/=/_/_/_/
A 2020-01-20T16:14:17Z  :: Spring Boot ::        (v2.1.5.RELEASE)

com.xxx.api.xxxApplication       : Starting xxxApplication v0.0.1-SNAPSHOT on bc233766746a with PID 1 (/app.jar started by root in /)
com.xxx.api.xxxApplication       : The following profiles are active: gcp
.s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data repositories in DEFAULT mode.
.s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 532ms. Found 17 repository interfaces.
trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$2c4dbf14] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration$$EnhancerBySpringCGLIB$$c4fb874e] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
trationDelegate$BeanPostProcessorChecker : Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuration.AutowireBeanFactoryObjectPostProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@6b00f608' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration$$EnhancerBySpringCGLIB$$e9d02a00] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
trationDelegate$BeanPostProcessorChecker : Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.hateoas.config.HateoasConfiguration' of type [org.springframework.hateoas.config.HateoasConfiguration$$EnhancerBySpringCGLIB$$abce0c46] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
o.apache.catalina.core.StandardService   : Starting service [Tomcat]
org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.19]
o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 11326 ms
com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
Connecting to Cloud SQL instance [xxx:europe-west4:xxx] via SSL socket.
First Cloud SQL connection, generating RSA key pair.

这是我在日志中的最后一行。据我所知,似乎没有什么东西坏了,没有错误。它似乎正确连接到云SQL实例。我迷路了。我尝试了很多东西,但无论如何我总是收到来自 Spring Boot 的 502 请求。

作为信息,即使服务器未启动,/liveness_check/readiness_check也始终返回 200(这很奇怪......

如果您需要有关我正在使用的配置的更多信息,请告诉我。 提前谢谢你!

我们终于解决了我们的问题。对于那些可能有相同问题的人:

问题是由我们的番石榴版本引起的。我们添加了 18.0 版,这显然是有问题的。我们在pom.xml中添加了以下依赖项:

<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>28.2-jre</version>
</dependency>

问题:)

解决了

哇,只是在这里发泄一下,但已经拔掉了大约 2 周的头发,现在试图将春季启动应用程序部署到谷歌云。听到对番石榴依赖项的修改可能导致应用程序无法启动,这令人难以置信地伤脑筋 - 更糟糕的是,使日志变得沉默,没有正在发生的事情的痕迹。目前,我也正在处理这样一种情况:找不到应用程序日志,也没有问题痕迹,而只是在谷歌云告诉我成功部署后简单地尝试命中端点。

这条评论和我肯定会在未来写其他人,更旨在让其他人发泄他们的挫败感,因为谷歌云支持不存在,除非你为此支付溢价。更糟糕的是,该产品在允许开发人员深入了解部署不起作用时实际出错的地方方面似乎非常糟糕。我希望这能引起他们的注意,我希望其他人也表达他们的挫败感,因为当该产品没有指示部署出了什么问题时,它根本无法使用。我已经搜索了他们的文档无济于事,似乎其他人也有类似的问题。不幸的是,我的双手被我的客户绑住了,无法使用谷歌云,否则我会在亲眼看到一些非常基本的缺陷方式后远离它。如果您正在评估云产品,我强烈建议您不要使用Google。

相关内容

  • 没有找到相关文章

最新更新