【问题标题】:Spring boot profile in Google App Engine Standard Java 11 - gcloudGoogle App Engine Standard Java 11 中的 Spring 引导配置文件 - gcloud
【发布时间】:2020-11-09 09:28:43
【问题描述】:

我正在通过 Github 操作部署我的 Spring Boot 应用程序。在那里,我有一个管道,它使用 gcloud 执行应用程序部署,以将我的应用程序部署到 Google App Engine Standard。我已经创建了配置文件,我想在运行时将其注入 Spring Boot 应用程序

简而言之:如何使用 gcloud 部署应用引擎标准 java 11 应用程序并支持 spring 配置文件

部署命令

app deploy src/main/appengine/app-dev.yaml --version=1

配置文件定义

<profiles>
        <profile>
            <id>dev</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <ACTIVE_PROFILE>dev</ACTIVE_PROFILE>
            </properties>
        </profile>
        <profile>
            <id>prod</id>
            <properties>
                <ACTIVE_PROFILE>prod</ACTIVE_PROFILE>
            </properties>
        </profile>
    </profiles>

<build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <profiles>
                        <profile>${ACTIVE_PROFILE}</profile>
                    </profiles>
                </configuration>
            </plugin>
            <plugin>
                <groupId>com.google.cloud.tools</groupId>
                <artifactId>appengine-maven-plugin</artifactId>
                <version>2.3.0</version>
                <configuration>
                    <projectId>${gcloud-projectId}</projectId>
                    <version>1</version>
                </configuration>
            </plugin>
        </plugins>
    </build>

app-dev.yaml 文件

 
runtime: java11
env: standard
instance_class: B4_1G
handlers:
  - url: .*
    script: auto
    secure: always
    redirect_http_response_code: 301
basic_scaling:
  max_instances: 5
  idle_timeout: 60m
env_variables:
  ACTIVE_PROFILE: dev

Application.yaml 文件

spring:
  profiles:
    active: @ACTIVE_PROFILE@

【问题讨论】:

    标签: spring-boot google-app-engine gcloud github-actions spring-profiles


    【解决方案1】:

    这似乎是因为 App Engine 需要您的应用程序的入口点。

    一些框架,包括 Spring Boot,构建一个可执行的 uber JAR 文件。发生这种情况时,运行时会通过运行 Uber JAR 应用程序来启动您的应用程序。

    因此,您需要一个 App Engine 将用于其内容的入口点。这应该在您的app.yaml 中定义,如下所示:

    runtime: java11
    entrypoint: java -Xmx64m -jar YOUR-ARTIFACT.jar
    

    示例 YOUR-ARTIFACT.jar 应用程序 jar 必须:

    • 位于您的 app.yaml 文件所在的根目录中。
    • 在其 META-INF/MANIFEST.MF 元数据文件中包含 Main-Class 条目。
    • (可选)包含一个 Class-Path 条目,其中包含指向其他相关 jar 的相对路径列表。这些将自动与应用程序一起上传。

    Source

    【讨论】:

    • 感谢您的回答,我可以在没有弹簧配置文件的情况下进行部署。我的问题是,我们如何在使用 gcloud 部署时将 spring 配置文件注入应用引擎标准 java 11。
    【解决方案2】:

    只需在 app.yaml 文件中包含 spring_profiles_active,我就可以在谷歌应用引擎标准 java 11 的 dev spring 配置文件中运行我的应用程序。

    env_variables:
     spring_profiles_active: "dev"
    

    【讨论】:

      猜你喜欢
      • 2018-08-05
      • 2012-11-19
      • 2021-08-12
      • 1970-01-01
      • 2015-07-22
      • 2018-05-27
      • 2019-09-03
      • 2022-08-19
      • 2019-11-08
      相关资源
      最近更新 更多