Spring boot profil dans Google App Engine Standard Java 11-gcloud


Je déploie mon application spring boot via des actions Github. En cela, j'ai un pipeline qui exécute le déploiement de l'application à l'aide de gcloud pour déployer mon application vers la norme Google App Engine. J'ai créé des profils et je veux injecter cela dans l'application spring boot au moment de l'exécution

En bref : Comment déployer une application java 11 standard app engine à l'aide de gcloud et prendre en charge le profil spring

Commande déployer

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

Définition du profil

<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.fichier 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

Demande.fichier yaml

spring:
  profiles:
    active: @ACTIVE_PROFILE@

Author: Sahil, 2020-11-09

2 answers

Je peux exécuter mon application dans dev spring profile dans google app engine standard java 11 en incluant simplement spring_profiles_active dans l'application.fichier yaml.

env_variables:
 spring_profiles_active: "dev"
 1
Author: Sahil, 2020-11-11 03:59:36

Cela semble se produire en raison du moteur d'application nécessitant un point d'entrée pour votre application.

Certains frameworks, Spring Boot aussi, construisent un fichier JAR uber exécutable. Lorsque cela se produit, le runtime démarre votre application en exécutant une application Uber JAR.

Vous avez donc besoin d'un point d'entrée que App Engine utilisera pour son contenu. Cela devrait être défini dans votre app.yaml comme indiqué ci-dessous:

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

, Où l'exemple YOUR-ARTIFACT.jar application jar doit:

  • Être dans la racine répertoire avec votre application.fichier yaml.
  • Contient une entrée de classe Principale dans son MÉTA-INF/MANIFESTE.Fichier de métadonnées MF.
  • Éventuellement, contient une entrée de chemin de classe avec une liste de chemins relatifs vers d'autres fichiers jar dépendants. Ceux-ci seront téléchargés avec l'application automatiquement.

Source

 0
Author: tzovourn, 2020-11-09 14:14:52