L'environnement d'exécution Java 8 n'inclut aucun framework de service Web. Votre application doit seulement écouter et répondre sur le port 8080. L'exemple de code présenté ici montre comment vous pouvez ajouter votre propre framework, tel que Spring Boot, à l'environnement d'exécution Java 8.
Prérequis
Avant de commencer à développer, téléchargez la dernière version de Google Cloud CLI ou mettez à jour gcloud CLI vers la version actuelle :
gcloud components update
Pour déployer à l'aide de Maven, vous devez ajouter le plug-in App Engine Maven à votre fichier
pom.xml
:<plugin> <groupId>com.google.cloud.tools</groupId> <artifactId>appengine-maven-plugin</artifactId> <version>2.7.0</version> </plugin>
D'autres options de déploiement incluent l'utilisation de la commande
gcloud app deploy
ou du plug-in App Engine Gradle.Suivez les instructions concernant votre framework d'application pour configurer le build d'un fichier JAR exécutable. Ce fichierJAR exécutable doit être exécuté via
java -jar app.jar
. Pour obtenir un exemple, consultez la documentation de Spring Boot.
Organiser vos fichiers
La hiérarchie de vos fichiers de développement devrait se présenter comme suit :
MyDir/ pom.xml [index.yaml] [cron.yaml] [dispatch.yaml] src/main/ appengine/ app.yaml docker/ Dockerfile java/ com.example.mycode/ MyCode.java
app.yaml
Veuillez indiquer un fichier app.yaml
. Définissez un fichier qui ressemble aux lignes suivantes :
runtime: java
env: flex
En spécifiant runtime: java
, l'image d'exécution gcr.io/google-appengine/openjdk:8
est sélectionnée automatiquement lorsque vous déployez un fichier JAR (*.jar
).
Pour sélectionner une version du JDK, utilisez le champ runtime_config.jdk
.
runtime: java
env: flex
runtime_config:
jdk: openjdk8
Vous trouverez d'autres paramètres app.yaml
dans la section Utiliser app.yaml.
Fichiers facultatifs
Les fichiers de configuration suivants sont facultatifs :
Placez ces fichiers au premier niveau de MyDir
. Si vous utilisez l'un de ces fichiers, vous devez le déployer séparément à l'aide de la commande gcloud app deploy
.
Point d'entrée par défaut
Le point d'entrée de l'image OpenJDK 8 est docker-entrypoint.bash
, qui traite les arguments de ligne de commande transmis pour rechercher une alternative exécutable ou des arguments pour la commande par défaut (java
).
Si le premier argument de l'image n'est pas un exécutable, la commande java
est ajoutée implicitement. Exemple :
$ docker run openjdk -jar /usr/share/someapplication.jar
Si le premier argument de l'image est un exécutable, tel que bash
, la commande s'exécute.
Par exemple, vous pouvez exécuter une interface système à l'aide des lignes suivantes :
> docker run -it --rm openjdk bash
root@c7b35e88ff93:/#
Variables d'environnement
Utilisez la clé env_variables
dans le fichier app.yaml
pour définir les variables d'environnement.
Exemple :
env_variables:
MY_VAR_COLOR: 'blue'
Le tableau suivant répertorie les variables d'environnement que vous pouvez utiliser pour activer, désactiver ou configurer des fonctionnalités.
Var. env. | Description | Type | Par défaut |
---|---|---|---|
TMPDIR |
Répertoire temporaire | nom de répertoire | |
JAVA_TMP_OPTS |
Arguments JVM du répertoire temporaire | arguments JVM | -Djava.io.tmpdir=${TMPDIR} |
GAE_MEMORY_MB |
Mémoire disponible | taille | Défini par Google App Engine ou /proc/meminfo -400M |
HEAP_SIZE_RATIO |
Mémoire pour le segment de mémoire | pourcentage | 80 |
HEAP_SIZE_MB |
Segment de mémoire disponible | taille | ${HEAP_SIZE_RATIO} % sur ${GAE_MEMORY_MB} |
JAVA_HEAP_OPTS |
Arguments JVM du tas de mémoire | arguments JVM | -Xms${HEAP_SIZE_MB}M -Xmx${HEAP_SIZE_MB}M |
JAVA_GC_OPTS |
Arguments JVM de Google Cloud | Arguments JVM | -XX:+UseG1GC plus configuration |
JAVA_USER_OPTS |
Autres arguments JVM | arguments JVM | |
JAVA_OPTS |
Arguments JVM | arguments JVM | Voir ci-dessous |
SHUTDOWN_LOGGING_THREAD_DUMP |
Vidage du thread d'arrêt | booléen | false |
SHUTDOWN_LOGGING_HEAP_INFO |
Informations relatives au segment de mémoire d'arrêt | booléen | false |
SHUTDOWN_LOGGING_SAMPLE_THRESHOLD |
Échantillonnage d'arrêt | pourcentage | 100 |
Si ces variables ne sont pas définies explicitement, JAVA_OPTS
est défini par défaut sur JAVA_OPTS:=-showversion \
${JAVA_TMP_OPTS} \
${DBG_AGENT} \
${JAVA_HEAP_OPTS} \
${JAVA_GC_OPTS} \
${JAVA_USER_OPTS}
:
La ligne de commande exécutée est effective (où $@ sont les arguments passés au point d'entrée de Docker) :
java $JAVA_OPTS "$@"
Tester en local
Vous pouvez créer votre application à l'aide de la commande suivante :
mvn package
Et l'exécuter à l'aide de la ligne de commande java
:
java -jar target/myjar.jar
Vous pouvez aussi suivre les instructions relatives au framework de votre application sur la manière d'exécuter l'application en local.
Lorsque vous testez une application dans votre environnement local, vous préférez peut-être utiliser les services cloud émulés de Google, plutôt que ses services cloud distants.
Il existe des émulateurs pour Cloud Datastore, Cloud Pub/Sub et Cloud Bigtable.
Utilisez la commande gcloud
pour les démarrer avant de lancer votre application :
gcloud beta emulators datastore start
gcloud beta emulators pubsub start
gcloud beta emulators bigtable start
Déployer l'application
Une fois les configurations terminées, vous pouvez utiliser Google Cloud CLI pour déployer ce répertoire contenant le fichier app.yaml
et le fichier JAR en utilisant la commande suivante :
gcloud app deploy app.yaml
Si vous utilisez l'un des fichiers de configuration facultatifs (index.yaml
, cron.yaml
et dispatch.yaml
), veillez à les déployer séparément à l'aide de la commande gcloud
. Exemple :
gcloud app deploy cron.yaml
Maven
Utilisez Maven pour déployer votre application, à l'aide de la commande suivante :
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
Remplacez PROJECT_ID par l'ID de votre projet Google Cloud. Si votre ID de projet est déjà inclus dans le fichier pom.xml
, vous n'avez pas besoin d'inclure la propriété -Dapp.deploy.projectId
dans la commande que vous exécutez.
Gradle
Utilisez Gradle pour déployer votre application, à l'aide de la commande suivante :
gradle appengineDeploy
Personnaliser l'environnement d'exécution Java 8
Vous n'avez pas besoin d'un fichier Dockerfile pour déployer votre application dans l'environnement d'exécution Java 8. Toutefois, si votre application nécessite une configuration supplémentaire, vous pouvez explicitement fournir un fichier Docker pour personnaliser l'environnement d'exécution Java.
Si vous souhaitez utiliser l'image comme base d'un environnement d'exécution personnalisé, vous pouvez spécifier l'élément runtime: custom
dans votre fichier app.yaml
, puis écrire le fichier Dockerfile comme suit :
FROM gcr.io/google-appengine/openjdk:8
COPY your-application.jar $APP_DESTINATION
Ces lignes ajoutent le fichier JAR au bon endroit dans le conteneur Docker.
Vous pouvez ajouter des instructions supplémentaires au fichier Dockerfile pour personnaliser l'environnement d'exécution Java. Pour en savoir plus, consultez la page Créer des environnements d'exécution personnalisés.