如何将Spring Boot应用程序部署到Google托管VM

我有一个Spring Boot应用程序,我正在试图找出将它部署到Google新的Managed VM环境的位(这些是能够运行Docker容器的VM) . 我已经开始使用以下内容定义app.yaml:

application: myapp-1
version: 1
runtime: java
api_version: 1
vm: true
handlers:
  - url: /*
  servlet: org.springframework.web.servlet.DispatcherServlet
  init_params:
    contextAttribute: org.springframework.web.context.WebApplicationContext.ROOT

然后我运行以下命令从我的应用程序根目录中测试:

gcloud --verbosity debug preview app run .

我一直在做一些试验和错误,现在得到以下异常:

Unknown url handler type.
<URLMap 
    secure=default 
    static_files=None 
    application_readable=None 
    auth_fail_action=redirect 
    require_matching_file=None 
    static_dir=None 
    redirect_http_response_code=None 
    http_headers=None 
    url=/* 
    script=None 
    upload=None 
    api_endpoint=None 
    expiration=None 
    position=None 
    login=optional 
    mime_type=None
    >

我正在使用https://cloud.google.com/appengine/docs/java/configyaml/appconfig_yaml作为指南,但我开始怀疑托管VM环境是否支持app.yaml格式 .

这里有一个类似的例子https://github.com/GoogleCloudPlatform/appengine-java-vm-guestbook-extras但它没有使用app.yaml格式 .

是否有最新的示例可以让Spring Boot应用程序在Google托管虚拟机中运行?

回答(2)

3 years ago

我只看到了在Google AppEngine上运行SprinBoot应用程序的示例https://github.com/scratches/spring-boot-sample-gae

谷歌还就如何为Google AppEngine优化SpringApp添加了few hints(我认为它也适用于Google Managed Vm)

您还可以检查SpringBoot部署提示(http://spring.io/blog/2014/03/07/deploying-spring-boot-applications),尤其是部署到Jetty容器的部分(通常GAE使用Jetty容器)

我也试图部署这样一个在ManagedVm上使用GoogleDatastore的SpringBoot应用程序,所以我很快就会告诉你我的发现!保持良好的工作!

3 years ago

YAML文件使用缩进来精确定义结构 . 您是否可以尝试缩进 servletinit_params 的行,但需要很多空格,直到它们排列为例如here?或者这只是StackOverflow打破你的YAML粘贴的情况?