Membuat aplikasi runtime kustom di lingkungan fleksibel App Engine

ID region

REGION_ID adalah kode singkat yang ditetapkan Google berdasarkan region yang Anda pilih saat membuat aplikasi. Kode ini tidak sesuai dengan negara atau provinsi, meskipun beberapa ID region mungkin tampak mirip dengan kode negara dan provinsi yang umum digunakan. Untuk aplikasi yang dibuat setelah Februari 2020, REGION_ID.r disertakan dalam URL App Engine. Untuk aplikasi lama yang dibuat sebelum tanggal ini, ID region bersifat opsional dalam URL.

Dengan runtime kustom, Anda dapat membangun aplikasi yang berjalan di lingkungan yang ditentukan oleh Dockerfile. Dengan menggunakan Dockerfile, Anda dapat menggunakan bahasa dan paket yang bukan bagian dari Google Cloud, serta menggunakan resource dan alat yang sama dengan yang digunakan di lingkungan fleksibel App Engine.

Dalam panduan memulai ini, server web nginx diluncurkan ke App Engine menggunakan runtime kustom.

Sebelum memulai

Sebelum menjalankan aplikasi contoh di panduan memulai ini, Anda perlu menyiapkan lingkungan dan membuat project Google Cloud baru untuk App Engine:

  1. Buat project Google Cloud baru dengan menggunakan Konsol Google Cloud:

    1. Buka konsol Google Cloud:

      Buka halaman Projects

    2. Klik Create Project, lalu beri nama project Google Cloud baru Anda.

    3. Aktifkan penagihan di project Google Cloud baru dengan membuat akun penagihan baru atau menetapkan akun penagihan yang sudah ada:

      Buka halaman Billing

  2. Download dan instal Google Cloud CLI, lalu inisialisasi gcloud CLI:

    Mendownload SDK

  3. Jalankan perintah gcloud berikut untuk membuat aplikasi App Engine dan tentukan region geografis mana yang Anda inginkan untuk menjalankan aplikasi:

    gcloud app create
    

Lokasi App Engine

App Engine bersifat regional. Artinya, infrastruktur yang menjalankan aplikasi Anda terletak di region tertentu, dan Google mengelolanya sehingga tersedia secara redundan di seluruh semua zona dalam region tersebut.

Memenuhi persyaratan latensi, ketersediaan, atau ketahanan adalah faktor utama untuk memilih region tempat aplikasi dijalankan. Umumnya, Anda dapat memilih region yang paling dekat dengan pengguna aplikasi Anda, tetapi Anda harus mempertimbangkan lokasi tempat App Engine tersedia serta lokasi dari produk dan layanan Google Cloud lainnya yang digunakan aplikasi Anda. Penggunaan layanan di beberapa lokasi dapat memengaruhi latensi dan pricing aplikasi.

Anda tidak dapat mengubah region aplikasi setelah menyetelnya.

Jika sudah membuat aplikasi App Engine, Anda dapat melihat region-nya dengan melakukan salah satu tindakan berikut:

Mendownload aplikasi Halo Dunia

  1. Pilih salah satu opsi berikut untuk mendownload aplikasi contoh Hello World dari GitHub ke komputer lokal Anda:

    • Clone aplikasi contoh Halo Dunia dari repositori berikut:

      git clone https://github.com/GoogleCloudPlatform/appengine-custom-runtimes-samples
      
    • Download contoh sebagai file .zip, lalu ekstrak ke direktori lokal.

  2. Buka direktori nginx tempat kode contoh berada, misalnya:

    cd appengine-custom-runtimes-samples/nginx
    

Menjalankan Halo Dunia di komputer Anda

Anda dapat menguji aplikasi contoh dengan mendownload dan menginstal Docker, lalu menjalankan container Hello World di komputer lokal.

Tidak ada langkah-langkah khusus App Engine di sini sehingga Anda dapat menguji aplikasi contoh menggunakan alat dan pendekatan yang Anda inginkan.

Men-deploy Halo Dunia ke App Engine

Setelah Anda siap men-deploy aplikasi contoh ke App Engine, lakukan langkah-langkah berikut:

  1. Jalankan perintah berikut dari direktori tempat app.yaml dan Dockerfile Anda berada:

    gcloud app deploy
    

    Pelajari flag opsional.

  2. Agar aplikasi Anda berjalan di https://PROJECT_ID.REGION_ID.r.appspot.com, jalankan perintah berikut untuk meluncurkan browser:

    gcloud app browse
    

Flag perintah gcloud umum

  • Sertakan flag --version untuk menentukan ID yang secara unik mengidentifikasi versi aplikasi Anda. Jika tidak, ID akan dibuatkan untuk Anda. Contoh: --version [YOUR_VERSION_ID]
  • Sertakan flag --project untuk menentukan project ID Google Cloud alternatif dengan yang Anda inisialisasi sebagai default di alat gcloud. Contoh: --project [YOUR_PROJECT_ID]

Contoh:

gcloud app deploy --version pre-prod-5 --project my-sample-app

Untuk mempelajari lebih lanjut cara men-deploy aplikasi dari command line, lihat bagian Menguji dan Men-deploy Aplikasi. Untuk daftar semua flag perintah, lihat referensi gcloud app deploy.

Pembersihan

Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan pada halaman ini, ikuti langkah-langkah berikut.

  1. Di konsol Google Cloud, buka halaman Manage resource.

    Buka Manage resource

  2. Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

Langkah selanjutnya

Pelajari Dockerfile lebih lanjut di referensi Dockerfile.

Untuk informasi tentang cara membuat runtime kustom Anda sendiri, lihat Mem-build Runtime Kustom.

Peninjauan kode

Halo Dunia adalah aplikasi App Engine paling sederhana karena aplikasi ini membuat satu container yang hanya menjalankan satu layanan dan satu versi. Bagian ini menjelaskan setiap file aplikasi secara mendetail.

app.yaml

Menentukan konfigurasi aplikasi. File app.yaml harus berada di direktori yang sama dengan file Dockerfile.

runtime: custom
env: flex

Entri runtime: custom memberi tahu App Engine untuk mencari Dockerfile yang akan menentukan image runtime Anda dan env: flex menentukan bahwa Anda men-deploy ke lingkungan fleksibel.

Untuk informasi selengkapnya, lihat referensi app.yaml.

Dockerfile

Menentukan rangkaian petunjuk yang digunakan untuk membuat image Docker untuk container aplikasi contoh. File Dockerfile harus berada di direktori yang sama dengan file app.yaml. Dockerfile ini akan menginstal server web nginx dan menyalin beberapa konfigurasi dasar:

# The standard nginx container just runs nginx. The configuration file added
# below will be used by nginx.
FROM nginx

# Copy the nginx configuration file. This sets up the behavior of nginx, most
# importantly, it ensure nginx listens on port 8080. Google App Engine expects
# the runtime to respond to HTTP requests at port 8080.
COPY nginx.conf /etc/nginx/nginx.conf

# create log dir configured in nginx.conf
RUN mkdir -p /var/log/app_engine

# Create a simple file to handle health checks. Health checking can be disabled
# in app.yaml, but is highly recommended. Google App Engine will send an HTTP
# request to /_ah/health and any 2xx or 404 response is considered healthy.
# Because 404 responses are considered healthy, this could actually be left
# out as nginx will return 404 if the file isn't found. However, it is better
# to be explicit.
RUN mkdir -p /usr/share/nginx/www/_ah && \
    echo "healthy" > /usr/share/nginx/www/_ah/health

# Finally, all static assets.
ADD www/ /usr/share/nginx/www/
RUN chmod -R a+r /usr/share/nginx/www

Perintah FROM membuat image dasar menggunakan image Docker resmi untuk server web nginx.

Dengan menggunakan Dockerfile ini, image container Anda akan berisi nginx dan semua konten dalam direktori www/ akan tersedia untuk aplikasi Anda.

Aplikasi contoh Halo Dunia juga mencakup nginx.conf file yang berisi informasi konfigurasi dasar nginx, serta index.html yang berfungsi sebagai halaman {i>root<i} untuk server web nginx.