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@
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"
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.