Halaman ini menjelaskan cara men-deploy layanan ke Cloud Run menggunakan file berdasarkan Spesifikasi Compose.
Anda dapat men-deploy ke Cloud Run dengan file Compose dengan cara berikut:
Penggunaan Compose untuk men-deploy ke Cloud Run sangat ideal untuk pengembangan dan menyederhanakan transisi dari lingkungan lokal ke lingkungan cloud. Cara ini memungkinkan Anda mempertahankan format konfigurasi yang konsisten untuk aplikasi lokal dan yang di-deploy.
Untuk mengelola lingkungan produksi di lingkungan infrastruktur sebagai kode (IaC), sebaiknya gunakan Terraform.
Batasan
- Deployment Compose men-deploy satu layanan Cloud Run dengan beberapa container.
- Deployment Compose hanya menerjemahkan sebagian fitur Cloud Run yang didukung.
- Layanan yang dibuat menggunakan Compose ditetapkan secara default ke 1 instance maksimum.
- Meskipun menyederhanakan deployment, deployment Cloud Run Compose bukan pengganti strategi infrastruktur sebagai kode yang komprehensif untuk lingkungan produksi.
Men-deploy layanan dari image container dengan Compose
Tentukan layanan Anda dalam file compose.yaml dan deploy dari image container yang ada. Untuk mengetahui informasi selengkapnya, lihat Men-deploy image container.
Contoh: Aplikasi layanan tunggal
Contoh berikut menunjukkan file compose.yaml untuk layanan web yang menggunakan image container bawaan.
services:
web:
image: us-docker.pkg.dev/cloudrun/container/hello
ports:
- "8080:8080"
Men-deploy layanan
Untuk men-deploy layanan, jalankan perintah
gcloud beta run compose up:gcloud beta run compose up compose.yamlRespons
yuntuk setiap perintah guna menginstal komponen yang diperlukan atau mengaktifkan API.Opsional: Tampilkan layanan Anda ke publik jika ingin mengizinkan akses tanpa autentikasi ke layanan.
Setelah deployment, URL layanan Cloud Run akan ditampilkan. Salin URL ini dan tempelkan ke browser Anda untuk melihat penampung yang sedang berjalan. Anda dapat menonaktifkan autentikasi default dari konsol Google Cloud .
Men-deploy dari sumber dengan Compose
Tentukan layanan Anda dalam file compose.yaml dan deploy layanan tersebut dengan membangun dari kode sumber. Untuk mengetahui informasi selengkapnya, lihat Men-deploy layanan dari kode sumber.
Contoh: Aplikasi layanan tunggal
Contoh berikut menunjukkan file compose.yaml untuk layanan web yang di-build
dari sumber di direktori saat ini.
services:
web:
build: .
ports:
- "8080:8080"
Men-deploy layanan
Di direktori project Anda, buat file
compose.yamldengan definisi layanan Anda.Untuk men-deploy layanan, jalankan perintah
gcloud beta run compose up:gcloud beta run compose up compose.yamlRespons
yuntuk setiap perintah guna menginstal komponen yang diperlukan atau mengaktifkan API.Opsional: Tampilkan layanan Anda ke publik jika ingin mengizinkan akses tanpa autentikasi ke layanan.
Setelah deployment, URL layanan Cloud Run akan ditampilkan. Salin URL ini dan tempelkan ke browser Anda untuk melihat penampung yang sedang berjalan. Anda dapat menonaktifkan autentikasi default dari konsol Google Cloud .
Fitur yang didukung
Saat Anda men-deploy menggunakan file compose.yaml, Cloud Run dapat
secara otomatis menyediakan resource Google Cloud lain seperti yang ditentukan dalam
file Compose Anda. Jika resource diperlukan, Cloud Run akan meminta persetujuan Anda sebelum membuatnya.
Cloud Run mendukung subset fitur Compose berikut:
| Kolom Compose | Pemetaan & deskripsi Cloud Run |
|---|---|
services |
Layanan dipetakan ke setiap container dalam layanan Cloud Run yang di-deploy. |
volumes |
Didukung sebagian. Menerjemahkan pemasangan |
secrets |
Didukung. Menggunakan Secret Manager. |
configs |
Didukung. Menggunakan Cloud Storage. |
build |
Cloud Build membangun container menggunakan konteks build, memberi tag, dan
mengirim ke repositori |
image |
Men-deploy image container yang telah dibuat sebelumnya dari registry yang didukung. Gunakan jika Anda memiliki image bawaan. Hanya mendukung image Docker Hub dan Artifact Registry. Untuk image kustom, Anda dapat mengirim image ke Artifact Registry dan menggunakannya. |
ports |
Daftar pemetaan port, seperti |
expose |
Daftar port yang akan diekspos tetapi tidak dipublikasikan, seperti |
depends_on |
Menentukan urutan startup container. Hal ini memastikan bahwa setiap layanan yang tercantum dalam |
cpu_count/cpus |
Petunjuk yang digunakan untuk menyetel batas CPU dan memori Cloud Run, mengalokasikan resource secara otomatis sesuai dengan logika berikut:
|
container_name |
Menetapkan nama container untuk penyelesaian dependensi, yang secara default adalah nama layanan jika tidak ditentukan. |
environment |
Meneruskan variabel lingkungan ke container yang sesuai di Cloud Run. |
command |
Mengganti perintah default container, yang dideklarasikan oleh container, dengan
memetakan ke atribut |
entrypoint |
Didukung. |
env_file |
Didukung. |
x-google-cloudrun:ingress-container |
(Ekstensi) Tambahkan ekstensi khusus Google ini ke layanan dan tetapkan ke
|
x-google-cloudrun:volume-type: in-memory |
(Ekstensi) Tambahkan ekstensi khusus Google ini ke volume dan tetapkan ke
|
Secret yang dipetakan ke Secret Manager
Jika file compose.yaml Anda menentukan secrets, gcloud CLI
akan menyediakan secret Secret Manager untuk menyimpan data ini.
Volume dan konfigurasi yang dipetakan ke Cloud Storage
Jika file compose.yaml Anda menentukan volumes atau configs tingkat teratas, gcloud CLI akan menyediakan bucket Cloud Storage untuk mengelola data ini. Satu bucket dibuat per deployment, menggunakan folder untuk memisahkan volume dan konfigurasi.
- Volume bernama: Folder kosong yang sesuai dengan nama volume akan dibuat di bucket.
- Bind mount: Untuk bind mount, Cloud Run mengupload konten direktori sumber lokal ke folder di bucket sebelum deployment.
- Configs: Untuk setiap konfigurasi yang ditentukan dengan sumber
file:, Cloud Run mengupload konten file lokal ke folder di bucket.
Peran yang diperlukan
Selama deployment, Cloud Run secara otomatis memberikan peran yang diperlukan kepada identitas layanan yang di-deploy untuk mengakses resource yang disediakan:
- Bucket Cloud Storage:
roles/storage.objectUser - Secret Manager Secrets:
roles/secretmanager.secretAccessor
Komunikasi antar-container dari instance yang sama
Cloud Run menambahkan entri ke file /etc/hosts di setiap
container. Entri ini memetakan nama layanan dari file compose.yaml ke alamat IP internalnya, sehingga layanan dapat berkomunikasi satu sama lain menggunakan nama layanannya.
Langkah berikutnya
- Pelajari lebih lanjut cara mengelola layanan.
- Pelajari cara menyiapkan autentikasi.
- Pelajari cara mengelola rahasia.