【问题标题】:Deploy dockerized spring boot web on App Engine在 App Engine 上部署 dockerized spring boot web
【发布时间】:2025-12-20 07:15:07
【问题描述】:

我有一个 Spring Boot Web 应用程序,该应用程序当前部署在 Google App Engine 上。现在我转移到 Docker 并希望将此应用程序的 docker 映像部署到 App Engine 上。

到目前为止,我找不到任何与此相关的文档。大部分文档解释了如何在 Tomcat 上部署 Spring boot 的 docker 镜像。有什么方法可以实现吗?

【问题讨论】:

    标签: spring-boot docker google-app-engine google-cloud-platform


    【解决方案1】:

    首先你需要App Engine using the flexible environment,如果你想通过docker镜像部署。

    这里是文档Building Custom Runtimes

    自定义运行时允许您使用任何受支持的 App Engine 柔性环境语言的替代实现,或自定义 Google 提供的语言。它还允许您使用任何其他可以处理传入 HTTP 请求的语言编写代码(示例)。借助自定义运行时,App Engine 柔性环境为您提供和管理您的扩展、监控和负载平衡基础架构,因此您可以专注于构建您的应用程序。

    在官方情况下,他们有码头的样本 DockeFile。但是您可以忽略码头部分,只需让您的 Spring Boot 应用程序可执行并运行它。

    FROM gcr.io/google-appengine/jetty
    ADD test-webapp-1.0-SNAPSHOT.war $JETTY_BASE/webapps/root.war
    WORKDIR $JETTY_BASE
    RUN java -jar $JETTY_HOME/start.jar --approve-all-licenses --add-to-startd=jmx,stats,hawtio 
    
     && chown -R jetty:jetty $JETTY_BASE
    

    【讨论】:

    • 感谢分享信息!
    【解决方案2】:

    希望这会有所帮助:

    https://github.com/GoogleCloudPlatform/getting-started-java/tree/master/helloworld-springboot

    Docker 容器的一个引人注目的好处是,当容器在一个运行时(例如 Tomcat)上工作时,在不同的运行时(例如 App Engine)中交换应该相对简单。

    NB App Engine Flexible 是您想要的特定服务。它类似于 App Engine Standard,但它会为您安排容器。

    容器(映像)与 App Engine Flexible 一起使用的主要要求是容器在端口 8080 上公开一个 HTTP 端点。只要您的容器满足此义务,您就可以运行 anything在里面。

    【讨论】:

    • 这很有帮助。感谢您的信息!
    最近更新 更多