Runtime Java 8 tidak menyertakan framework penyajian web apa pun. Satu-satunya persyaratan adalah aplikasi Anda harus memproses dan merespons pada port 8080. Kode contoh di sini menunjukkan cara menambahkan framework Anda sendiri, seperti Spring Boot, ke runtime Java 8.
Prasyarat
Sebelum mulai mengembangkan, download Google Cloud CLI versi terbaru atau update gcloud CLI ke versi terbaru:
gcloud components update
Untuk men-deploy menggunakan Maven, Anda perlu menambahkan Plugin Maven App Engine ke
pom.xml
:<plugin> <groupId>com.google.cloud.tools</groupId> <artifactId>appengine-maven-plugin</artifactId> <version>2.7.0</version> </plugin>
Opsi lain untuk men-deploy mencakup penggunaan perintah
gcloud app deploy
atau plugin App Engine Gradle.Ikuti petunjuk untuk framework aplikasi Anda guna mengonfigurasi build JAR yang dapat dieksekusi. JAR yang dapat dieksekusi ini harus dijalankan melalui
java -jar app.jar
. Sebagai contoh, rujuk dokumentasi Spring Boot.
Mengatur file Anda
Hierarki file pengembangan Anda akan terlihat seperti ini:
MyDir/ pom.xml [index.yaml] [cron.yaml] [dispatch.yaml] src/main/ appengine/ app.yaml docker/ Dockerfile java/ com.example.mycode/ MyCode.java
app.yaml
File app.yaml
wajib ada. Tentukan file yang terlihat seperti ini:
runtime: java
env: flex
Dengan menentukan runtime: java
, image runtime
gcr.io/google-appengine/openjdk:8
akan otomatis dipilih saat Anda men-deploy
file JAR (*.jar
).
Untuk memilih versi JDK, gunakan kolom runtime_config.jdk
.
runtime: java
env: flex
runtime_config:
jdk: openjdk8
Anda dapat menemukan setelan app.yaml
lain di
Menggunakan app.yaml.
File opsional
File konfigurasi ini bersifat opsional:
Tempatkan file ini di tingkat teratas MyDir
. Jika menggunakan file ini, Anda
harus men-deploy-nya secara terpisah dengan perintah gcloud app deploy
.
Titik entri default
Titik entri untuk gambar OpenJDK 8 adalah docker-entrypoint.bash
, yang
memproses argumen command line yang diteruskan untuk mencari alternatif yang dapat dieksekusi atau
argumen terhadap perintah default (java
).
Jika argumen pertama untuk gambar tidak dapat dieksekusi, perintah java
akan ditambahkan secara implisit. Contoh:
$ docker run openjdk -jar /usr/share/someapplication.jar
Jika argumen pertama ke image dapat dieksekusi, seperti bash
, argumen ini akan
menjalankan perintah tersebut.
Misalnya, Anda dapat menjalankan shell dengan:
> docker run -it --rm openjdk bash
root@c7b35e88ff93:/#
Variabel lingkungan
Gunakan kunci env_variables
dalam file app.yaml
untuk menetapkan variabel lingkungan.
Contoh:
env_variables:
MY_VAR_COLOR: 'blue'
Tabel berikut mencantumkan variabel lingkungan yang dapat Anda gunakan untuk mengaktifkan, menonaktifkan, atau mengonfigurasi fitur.
Env Var | Deskripsi | Jenis | Default |
---|---|---|---|
TMPDIR |
Direktori Sementara | dirname | |
JAVA_TMP_OPTS |
JVM tmpdir args | JVM args | -Djava.io.tmpdir=${TMPDIR} |
GAE_MEMORY_MB |
Memori yang tersedia | ukuran | Ditetapkan oleh Google App Engine atau /proc/meminfo -400M |
HEAP_SIZE_RATIO |
Memori untuk heap | persen | 80 |
HEAP_SIZE_MB |
Heap yang tersedia | ukuran | ${HEAP_SIZE_RATIO} % dari ${GAE_MEMORY_MB} |
JAVA_HEAP_OPTS |
JVM heap args | JVM args | -Xms${HEAP_SIZE_MB}M -Xmx${HEAP_SIZE_MB}M |
JAVA_GC_OPTS |
JVM GC args | JVM args | -XX:+UseG1GC plus konfigurasi |
JAVA_USER_OPTS |
JVM other args | JVM args | |
JAVA_OPTS |
JVM args | JVM args | Lihat di bawah |
SHUTDOWN_LOGGING_THREAD_DUMP |
Menghentikan thread dump | boolean | false |
SHUTDOWN_LOGGING_HEAP_INFO |
Matikan info heap | boolean | false |
SHUTDOWN_LOGGING_SAMPLE_THRESHOLD |
Pengambilan sampel penonaktifan | persen | 100 |
Jika tidak ditetapkan secara eksplisit, JAVA_OPTS
akan ditetapkan secara default ke
JAVA_OPTS:=-showversion \
${JAVA_TMP_OPTS} \
${DBG_AGENT} \
${JAVA_HEAP_OPTS} \
${JAVA_GC_OPTS} \
${JAVA_USER_OPTS}
Command line dijalankan secara efektif (dengan $@ adalah args yang diteruskan ke titik entri Docker):
java $JAVA_OPTS "$@"
Pengujian Lokal
Anda dapat mem-build aplikasi menggunakan:
mvn package
Dan jalankan menggunakan command line java
:
java -jar target/myjar.jar
Atau, ikuti petunjuk untuk framework aplikasi Anda tentang cara menjalankan aplikasi secara lokal.
Saat melakukan pengujian di lingkungan lokal, Anda mungkin lebih memilih untuk menggunakan
layanan cloud Google teremulasi, dan bukan layanan cloud Google jarak jauh.
Terdapat emulator untuk
Datastore,
Pub/Sub, dan
Bigtable.
Gunakan perintah gcloud
untuk memulainya sebelum Anda menjalankan aplikasi:
gcloud beta emulators datastore start
gcloud beta emulators pubsub start
gcloud beta emulators bigtable start
Men-deploy aplikasi Anda
Setelah menyelesaikan konfigurasi, Anda dapat menggunakan Google Cloud CLI untuk men-deploy
direktori ini yang berisi file app.yaml
dan JAR menggunakan:
gcloud app deploy app.yaml
Jika Anda menggunakan salah satu file konfigurasi opsional
(index.yaml
, cron.yaml
, dan dispatch.yaml
) pastikan untuk men-deploy-nya
secara terpisah dengan perintah gcloud
. Contoh:
gcloud app deploy cron.yaml
Maven
Gunakan Maven untuk men-deploy aplikasi Anda:
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
Ganti PROJECT_ID dengan ID project Google Cloud Anda. Jika
file pom.xml
sudah
menentukan
project ID, Anda tidak perlu menyertakan properti -Dapp.deploy.projectId
dalam
perintah yang dijalankan singkat ini.
Gradle
Gunakan Gradle untuk men-deploy aplikasi Anda:
gradle appengineDeploy
Menyesuaikan runtime Java 8
Anda tidak memerlukan Dockerfile untuk men-deploy aplikasi ke runtime Java 8. Namun, jika aplikasi Anda memerlukan konfigurasi tambahan, Anda dapat secara eksplisit menyediakan Dockerfile untuk menyesuaikan runtime Java.
Jika ingin menggunakan image sebagai dasar untuk runtime kustom, Anda dapat menentukan
runtime: custom
dalam file app.yaml
, lalu menulis Dockerfile seperti
ini:
FROM gcr.io/google-appengine/openjdk:8
COPY your-application.jar $APP_DESTINATION
Baris ini menambahkan JAR di lokasi yang benar untuk container Docker.
Anda dapat menambahkan perintah tambahan ke Dockerfile untuk menyesuaikan runtime Java. Lihat Mem-build Runtime Kustom.