1. Pengantar
Cloud Run adalah platform komputasi terkelola yang memungkinkan Anda untuk menjalankan container stateless yang dapat dipanggil melalui permintaan HTTP. Cloud Run bersifat serverless. Platform ini memisahkan semua pengelolaan infrastruktur di lokasi lain, sehingga Anda dapat fokus pada hal terpenting, yakni membuat aplikasi yang andal.
Layanan ini juga secara native berinteraksi dengan banyak bagian lain dari ekosistem Google Cloud, termasuk Cloud SQL untuk database terkelola, Cloud Storage untuk penyimpanan objek terpadu, dan Secret Manager untuk mengelola secret.
Django adalah framework web Python level tinggi.
Dalam tutorial ini, Anda akan menggunakan komponen-komponen ini untuk men-deploy project Django kecil.
Catatan: Codelab ini terakhir diverifikasi dengan Django 5.0. Kecuali jika ada perubahan yang dapat menyebabkan gangguan pada update mendatang, codelab ini akan terus berfungsi. Periksa catatan rilis Django di masa mendatang.
Yang akan Anda pelajari
- Cara menggunakan Cloud Shell
- Cara membuat database Cloud SQL
- Cara membuat bucket Cloud Storage
- Cara membuat secret Secret Manager
- Cara menggunakan Secret dari berbagai layanan Google Cloud
- Cara menghubungkan komponen Google Cloud ke layanan Cloud Run
- Cara menggunakan Container Registry untuk menyimpan container yang di-build
- Cara men-deploy ke Cloud Run
- Cara menjalankan migrasi skema database di Cloud Build
2. Penyiapan dan persyaratan
Penyiapan lingkungan mandiri
- Login ke Google Cloud Console dan buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.
- Project name adalah nama tampilan untuk peserta project ini. String ini adalah string karakter yang tidak digunakan oleh Google API. Anda dapat memperbaruinya kapan saja.
- Project ID bersifat unik di semua project Google Cloud dan tidak dapat diubah (tidak dapat diubah setelah ditetapkan). Cloud Console otomatis membuat string unik; biasanya Anda tidak mementingkan kata-katanya. Di sebagian besar codelab, Anda harus merujuk Project ID-nya (umumnya diidentifikasi sebagai
PROJECT_ID
). Jika tidak suka dengan ID yang dibuat, Anda dapat membuat ID acak lainnya. Atau, Anda dapat mencobanya sendiri, dan lihat apakah ID tersebut tersedia. ID tidak dapat diubah setelah langkah ini dan tersedia selama durasi project. - Sebagai informasi, ada nilai ketiga, Project Number, yang digunakan oleh beberapa API. Pelajari lebih lanjut ketiga nilai ini di dokumentasi.
- Selanjutnya, Anda harus mengaktifkan penagihan di Konsol Cloud untuk menggunakan resource/API Cloud. Menjalankan operasi dalam codelab ini tidak akan memakan banyak biaya, bahkan mungkin tidak sama sekali. Guna mematikan resource agar tidak menimbulkan penagihan di luar tutorial ini, Anda dapat menghapus resource yang dibuat atau menghapus project-nya. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.
Google Cloud Shell
Meskipun Google Cloud dapat dioperasikan secara jarak jauh dari laptop Anda, dalam codelab ini kita akan menggunakan Google Cloud Shell, yakni lingkungan command line yang berjalan di Cloud.
Mengaktifkan Cloud Shell
- Dari Cloud Console, klik Aktifkan Cloud Shell .
Jika ini pertama kalinya Anda memulai Cloud Shell, Anda akan melihat layar perantara yang menjelaskan apa itu Cloud Shell. Jika Anda melihat layar perantara, klik Lanjutkan.
Perlu waktu beberapa saat untuk penyediaan dan terhubung ke Cloud Shell.
Virtual machine ini berisi semua alat pengembangan yang diperlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Sebagian besar pekerjaan Anda dalam codelab ini dapat dilakukan dengan browser.
Setelah terhubung ke Cloud Shell, Anda akan melihat bahwa Anda telah diautentikasi dan project sudah ditetapkan ke project ID Anda.
- Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa Anda telah diautentikasi:
gcloud auth list
Output perintah
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
- Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa perintah gcloud mengetahui project Anda:
gcloud config list project
Output perintah
[core] project = <PROJECT_ID>
Jika tidak, Anda dapat menyetelnya dengan perintah ini:
gcloud config set project <PROJECT_ID>
Output perintah
Updated property [core/project].
3. Mengaktifkan Cloud API
Dari Cloud Shell, aktifkan Cloud API untuk komponen yang akan digunakan:
gcloud services enable \ run.googleapis.com \ sql-component.googleapis.com \ sqladmin.googleapis.com \ compute.googleapis.com \ cloudbuild.googleapis.com \ secretmanager.googleapis.com \ artifactregistry.googleapis.com
Karena ini pertama kalinya Anda memanggil API dari gcloud, Anda akan diminta untuk melakukan otorisasi menggunakan kredensial Anda untuk membuat permintaan ini. Hal ini akan terjadi sekali per sesi Cloud Shell.
Operasi ini mungkin memerlukan waktu beberapa saat sampai selesai.
Setelah selesai, pesan sukses yang mirip dengan yang berikut ini akan muncul:
Operation "operations/acf.cc11852d-40af-47ad-9d59-477a12847c9e" finished successfully.
4. Membuat project template
Anda akan menggunakan {i>template<i} proyek Django default sebagai contoh proyek Django.
Untuk membuat project template ini, gunakan Cloud Shell untuk membuat direktori baru bernama django-cloudrun
lalu buka direktori tersebut:
mkdir ~/django-cloudrun cd ~/django-cloudrun
Kemudian, instal Django ke dalam lingkungan virtual sementara:
virtualenv venv source venv/bin/activate pip install Django
Simpan daftar paket yang diinstal ke requirements.txt
pip freeze > requirements.txt
Daftar ini harus menyertakan Django dan dependensinya: sqlparse
dan asgiref
.
Kemudian, buat project template baru:
django-admin startproject myproject .
Anda akan mendapatkan file baru bernama manage.py
, dan folder baru bernama myproject
yang akan berisi sejumlah file, termasuk settings.py
.
Pastikan konten folder tingkat atas sudah sesuai dengan yang diharapkan:
ls -F
manage.py myproject/ requirements.txt venv/
Pastikan konten folder myproject
seperti yang diharapkan:
ls -F myproject/
__init__.py asgi.py settings.py urls.py wsgi.py
Anda sekarang dapat keluar dan menghapus lingkungan virtual sementara:
deactivate rm -rf venv
Dari sini, Django akan dipanggil di dalam container.
5. Membuat layanan pendukung
Sekarang Anda akan membuat layanan pendukung: akun layanan khusus, Artifact Registry, database Cloud SQL, bucket Cloud Storage, dan sejumlah nilai Secret Manager.
Mengamankan nilai sandi yang digunakan dalam deployment penting untuk keamanan project apa pun, dan memastikan tidak ada yang tidak sengaja memasukkan sandi ke tempat yang tidak seharusnya (misalnya, langsung di file setelan, atau diketik langsung ke terminal tempat sandi dapat diambil dari histori.)
Untuk memulai, tetapkan dua variabel lingkungan dasar, satu untuk Project ID:
PROJECT_ID=$(gcloud config get-value core/project)
Dan satu untuk wilayah tersebut:
REGION=us-central1
Membuat akun layanan
Untuk membatasi akses yang dimiliki layanan ke bagian lain Google Cloud, buat akun layanan khusus:
gcloud iam service-accounts create cloudrun-serviceaccount
Anda akan merujuk akun ini melalui emailnya di bagian berikutnya dari codelab ini. Tetapkan nilai tersebut dalam variabel lingkungan:
SERVICE_ACCOUNT=$(gcloud iam service-accounts list \ --filter cloudrun-serviceaccount --format "value(email)")
Membuat Artifact Registry
Untuk menyimpan image container yang telah dibangun, buat container registry di region yang Anda pilih:
gcloud artifacts repositories create containers --repository-format docker --location $REGION
Anda akan mereferensikan registry ini berdasarkan namanya di bagian selanjutnya dari codelab ini:
ARTIFACT_REGISTRY=${REGION}-docker.pkg.dev/${PROJECT_ID}/containers
Membuat database
Buat instance Cloud SQL:
gcloud sql instances create myinstance --project $PROJECT_ID \ --database-version POSTGRES_14 --tier db-f1-micro --region $REGION
Operasi ini mungkin memerlukan waktu beberapa menit hingga selesai.
Dalam instance tersebut, buat database:
gcloud sql databases create mydatabase --instance myinstance
Pada instance yang sama, buat pengguna:
DJPASS="$(cat /dev/urandom | LC_ALL=C tr -dc 'a-zA-Z0-9' | fold -w 30 | head -n 1)" gcloud sql users create djuser --instance myinstance --password $DJPASS
Beri akun layanan izin untuk terhubung ke instance:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:${SERVICE_ACCOUNT} \ --role roles/cloudsql.client
Membuat bucket penyimpanan
Buat bucket Cloud Storage (perhatikan bahwa namanya harus unik secara global):
GS_BUCKET_NAME=${PROJECT_ID}-media gcloud storage buckets create gs://${GS_BUCKET_NAME} --location ${REGION}
Berikan izin kepada akun layanan untuk mengelola bucket:
gcloud storage buckets add-iam-policy-binding gs://${GS_BUCKET_NAME} \ --member serviceAccount:${SERVICE_ACCOUNT} \ --role roles/storage.admin
Menyimpan konfigurasi sebagai secret
Setelah menyiapkan layanan pendukung, Anda sekarang akan menyimpan nilai ini dalam file yang dilindungi menggunakan Secret Manager.
Dengan Secret Manager, Anda dapat menyimpan, mengelola, dan mengakses secret sebagai blob biner atau string teks. Layanan ini bekerja dengan baik untuk menyimpan informasi konfigurasi seperti sandi database, kunci API, atau sertifikat TLS yang diperlukan oleh aplikasi saat runtime.
Pertama, buat file dengan nilai untuk string koneksi database, bucket media, kunci rahasia untuk Django (digunakan untuk penandatanganan sesi dan token kriptografis), dan untuk mengaktifkan proses debug:
echo DATABASE_URL=\"postgres://djuser:${DJPASS}@//cloudsql/${PROJECT_ID}:${REGION}:myinstance/mydatabase\" > .env echo GS_BUCKET_NAME=\"${GS_BUCKET_NAME}\" >> .env echo SECRET_KEY=\"$(cat /dev/urandom | LC_ALL=C tr -dc 'a-zA-Z0-9' | fold -w 50 | head -n 1)\" >> .env echo DEBUG=True >> .env
Kemudian, buat secret bernama application_settings
, menggunakan file tersebut sebagai secret:
gcloud secrets create application_settings --data-file .env
Izinkan akun layanan mengakses rahasia ini:
gcloud secrets add-iam-policy-binding application_settings \ --member serviceAccount:${SERVICE_ACCOUNT} --role roles/secretmanager.secretAccessor
Pastikan secret telah dibuat dengan mencantumkan secret:
gcloud secrets versions list application_settings
Setelah mengonfirmasi bahwa rahasia telah dibuat, hapus file lokal:
rm .env
6. Konfigurasi aplikasi Anda
Dengan layanan pendukung yang baru saja Anda buat, Anda harus melakukan beberapa perubahan pada project template agar sesuai.
Hal ini akan mencakup pengenalan django-environ
untuk menggunakan variabel lingkungan sebagai setelan konfigurasi, yang akan Anda isi dengan nilai yang Anda tentukan sebagai secret. Untuk menerapkannya, Anda akan memperluas setelan template. Anda juga perlu menambahkan dependensi Python tambahan.
Mengonfigurasi setelan
Pindahkan file settings.py
, ganti namanya menjadi basesettings.py:
mv myproject/settings.py myproject/basesettings.py
Menggunakan editor web Cloud Shell, buat file settings.py
baru, dengan kode berikut:
touch myproject/settings.py cloudshell edit myproject/settings.py
myproject/settings.py
import io
import os
from urllib.parse import urlparse
import environ
# Import the original settings from each template
from .basesettings import *
# Load the settings from the environment variable
env = environ.Env()
env.read_env(io.StringIO(os.environ.get("APPLICATION_SETTINGS", None)))
# Setting this value from django-environ
SECRET_KEY = env("SECRET_KEY")
# Ensure myproject is added to the installed applications
if "myproject" not in INSTALLED_APPS:
INSTALLED_APPS.append("myproject")
# If defined, add service URLs to Django security settings
CLOUDRUN_SERVICE_URLS = env("CLOUDRUN_SERVICE_URLS", default=None)
if CLOUDRUN_SERVICE_URLS:
CSRF_TRUSTED_ORIGINS = env("CLOUDRUN_SERVICE_URLS").split(",")
# Remove the scheme from URLs for ALLOWED_HOSTS
ALLOWED_HOSTS = [urlparse(url).netloc for url in CSRF_TRUSTED_ORIGINS]
else:
ALLOWED_HOSTS = ["*"]
# Default false. True allows default landing pages to be visible
DEBUG = env("DEBUG", default=False)
# Set this value from django-environ
DATABASES = {"default": env.db()}
# Change database settings if using the Cloud SQL Auth Proxy
if os.getenv("USE_CLOUD_SQL_AUTH_PROXY", None):
DATABASES["default"]["HOST"] = "127.0.0.1"
DATABASES["default"]["PORT"] = 5432
# Define static storage via django-storages[google]
GS_BUCKET_NAME = env("GS_BUCKET_NAME")
STATICFILES_DIRS = []
GS_DEFAULT_ACL = "publicRead"
STORAGES = {
"default": {
"BACKEND": "storages.backends.gcloud.GoogleCloudStorage",
},
"staticfiles": {
"BACKEND": "storages.backends.gcloud.GoogleCloudStorage",
},
}
Luangkan waktu untuk membaca komentar yang ditambahkan tentang setiap konfigurasi.
Perhatikan bahwa Anda mungkin melihat error linting pada file ini. Ini hal yang normal. Cloud Shell tidak memiliki konteks persyaratan untuk project ini, sehingga mungkin melaporkan impor yang tidak valid dan impor yang tidak digunakan.
Dependensi Python
Temukan file requirements.txt
, dan tambahkan paket berikut:
cloudshell edit requirements.txt
requirements.txt (tambahkan)
gunicorn psycopg2-binary django-storages[google] django-environ
Menentukan image aplikasi
Cloud Run akan menjalankan container apa pun selama mematuhi Kontrak Container Cloud Run. Tutorial ini memilih untuk menghilangkan Dockerfile
, tetapi menggunakan Buildpack Berbasis Cloud. Buildpack membantu membangun container untuk bahasa umum, termasuk Python.
Tutorial ini memilih untuk menyesuaikan Procfile
yang digunakan untuk memulai aplikasi web.
Untuk memasukkan project template ke dalam container, buat file baru bernama Procfile
di level teratas project Anda terlebih dahulu (di direktori yang sama dengan manage.py
), lalu salin konten berikut:
touch Procfile cloudshell edit Procfile
Procfile
web: gunicorn --bind 0.0.0.0:$PORT --workers 1 --threads 8 --timeout 0 myproject.wsgi:application
7. Mengonfigurasi, membuat, dan menjalankan langkah migrasi
Untuk membuat skema database dalam database Cloud SQL dan mengisi bucket Cloud Storage dengan aset statis, Anda perlu menjalankan migrate
dan collectstatic
.
Perintah migrasi Django dasar ini harus dijalankan dalam konteks image container yang telah dibuat dengan akses ke database Anda.
Anda juga harus menjalankan createsuperuser
untuk membuat akun administrator guna login ke admin Django.
Untuk melakukannya, Anda akan menggunakan Tugas Cloud Run untuk melakukan tugas ini. Tugas Cloud Run memungkinkan Anda menjalankan proses yang memiliki akhir yang ditentukan, sehingga ideal untuk tugas administrasi.
Menentukan sandi superuser Django Anda
Untuk membuat superuser, Anda akan menggunakan versi non-interaktif perintah createsuperuser
. Perintah ini memerlukan variabel lingkungan yang diberi nama khusus untuk digunakan sebagai pengganti perintah untuk memasukkan sandi.
Buat secret baru, menggunakan sandi yang dibuat secara acak:
echo -n $(cat /dev/urandom | LC_ALL=C tr -dc 'a-zA-Z0-9' | fold -w 30 | head -n 1) | gcloud secrets create django_superuser_password --data-file=-
Izinkan akun layanan Anda mengakses secret ini:
gcloud secrets add-iam-policy-binding django_superuser_password \ --member serviceAccount:${SERVICE_ACCOUNT} \ --role roles/secretmanager.secretAccessor
Mengupdate Procfile Anda
Untuk membantu memperjelas tugas Cloud Run Anda, buat pintasan di Procfile, tambahkan titik entri berikut ke Procfile
:
migrate: python manage.py migrate && python manage.py collectstatic --noinput --clear createuser: python manage.py createsuperuser --username admin --email noop@example.com --noinput
Sekarang Anda akan memiliki tiga entri: titik entri web
default, titik entri migrate
untuk menerapkan migrasi database, dan titik entri createuser
untuk menjalankan perintah createsuperuser
.
Membangun image aplikasi Anda
Setelah pembaruan Procfile diterapkan, build image:
gcloud builds submit --pack image=${ARTIFACT_REGISTRY}/myimage
Membuat tugas Cloud Run
Setelah image ada, Anda dapat membuat tugas Cloud Run menggunakan image tersebut.
Tugas ini menggunakan image yang dibuat sebelumnya, tetapi menggunakan nilai command
yang berbeda. Nilai ini dipetakan ke nilai di Procfile
.
Buat tugas untuk migrasi:
gcloud run jobs create migrate \ --region $REGION \ --image ${ARTIFACT_REGISTRY}/myimage \ --set-cloudsql-instances ${PROJECT_ID}:${REGION}:myinstance \ --set-secrets APPLICATION_SETTINGS=application_settings:latest \ --service-account $SERVICE_ACCOUNT \ --command migrate
Buat tugas untuk pembuatan pengguna:
gcloud run jobs create createuser \ --region $REGION \ --image ${ARTIFACT_REGISTRY}/myimage \ --set-cloudsql-instances ${PROJECT_ID}:${REGION}:myinstance \ --set-secrets APPLICATION_SETTINGS=application_settings:latest \ --set-secrets DJANGO_SUPERUSER_PASSWORD=django_superuser_password:latest \ --service-account $SERVICE_ACCOUNT \ --command createuser
Menjalankan tugas Cloud Run
Setelah konfigurasi tugas diterapkan, jalankan migrasi:
gcloud run jobs execute migrate --region $REGION --wait
Pastikan output perintah ini menyatakan bahwa eksekusi "berhasil diselesaikan".
Anda akan menjalankan perintah ini nanti saat melakukan update pada aplikasi.
Dengan penyiapan database, buat pengguna menggunakan tugas:
gcloud run jobs execute createuser --region $REGION --wait
Pastikan output perintah ini menyatakan bahwa eksekusi "berhasil diselesaikan".
Anda tidak perlu menjalankan perintah ini lagi.
8. Men-deploy ke Cloud Run
Setelah layanan pendukung dibuat dan diisi, Anda kini dapat membuat layanan Cloud Run untuk mengaksesnya.
Deploy layanan ke Cloud Run, menggunakan image yang Anda bangun sebelumnya, dengan perintah berikut:
gcloud run deploy django-cloudrun \ --region $REGION \ --image ${ARTIFACT_REGISTRY}/myimage \ --set-cloudsql-instances ${PROJECT_ID}:${REGION}:myinstance \ --set-secrets APPLICATION_SETTINGS=application_settings:latest \ --service-account $SERVICE_ACCOUNT \ --allow-unauthenticated
Jika berhasil, command line akan menampilkan URL layanan:
Service [django-cloudrun] revision [django-cloudrun-00001-...] has been deployed and is serving 100 percent of traffic. Service URL: https://django-cloudrun-...run.app
Sekarang Anda dapat melihat container yang telah di-deploy dengan membuka URL ini di browser web:
9. Mengakses Django Admin
Salah satu fitur utama Django adalah admin interaktifnya.
Memperbarui setelan CSRF
Django menyertakan perlindungan terhadap Pemalsuan Permintaan Lintas Situs (CSRF). Setiap kali formulir dikirim di situs Django Anda, termasuk login ke admin Django, setelan Origin Tepercaya akan diperiksa. Jika tidak cocok dengan asal permintaan, Django akan menampilkan error.
Dalam file mysite/settings.py
, jika variabel lingkungan CLOUDRUN_SERVICE_URL
ditentukan, variabel tersebut akan digunakan dalam setelan CSRF_TRUSTED_ORIGINS
dan ALLOWED_HOSTS
. Meskipun menentukan ALLOWED_HOSTS
tidak wajib, sebaiknya tambahkan ini karena sudah diperlukan untuk CSRF_TRUSTED_ORIGINS
.
Karena Anda memerlukan URL layanan, konfigurasi ini tidak dapat ditambahkan sebelum deployment pertama selesai.
Anda harus mengupdate layanan untuk menambahkan variabel lingkungan ini. Ini dapat ditambahkan ke rahasia application_settings
, atau ditambahkan langsung sebagai variabel lingkungan.
Implementasi di bawah memanfaatkan pemformatan dan escape gcloud.
Ambil URL layanan Anda:
CLOUDRUN_SERVICE_URLS=$(gcloud run services describe django-cloudrun \ --region $REGION \ --format "value(metadata.annotations[\"run.googleapis.com/urls\"])" | tr -d '"[]') echo $CLOUDRUN_SERVICE_URLS
Tetapkan nilai ini sebagai variabel lingkungan di layanan Cloud Run Anda:
gcloud run services update django-cloudrun \ --region $REGION \ --update-env-vars "^##^CLOUDRUN_SERVICE_URLS=$CLOUDRUN_SERVICE_URLS"
Login ke Admin Django
Untuk mengakses antarmuka admin Django, tambahkan /admin
ke URL layanan Anda.
Sekarang, login dengan nama pengguna "admin" dan ambil sandi Anda menggunakan perintah berikut:
gcloud secrets versions access latest --secret django_superuser_password && echo ""
10. Mengembangkan aplikasi
Saat mengembangkan aplikasi, Anda perlu mengujinya secara lokal. Untuk melakukannya, Anda harus terhubung ke database Cloud SQL ("production"), atau database lokal ("test").
Menghubungkan ke database produksi
Anda dapat terhubung ke instance Cloud SQL menggunakan Cloud SQL Auth Proxy. Aplikasi ini membuat koneksi dari komputer lokal Anda ke database.
Setelah Anda menginstal Proxy Auth Cloud SQL, ikuti langkah-langkah berikut:
# Create a virtualenv virtualenv venv source venv/bin/activate pip install -r requirements.txt # Copy the application settings to your local machine gcloud secrets versions access latest --secret application_settings > temp_settings # Run the Cloud SQL Auth Proxy ./cloud-sql-proxy --instances=${PROJECT_ID}:${REGION}:myinstance=tcp:5432 # In a new tab, start the local web server using these new settings USE_CLOUD_SQL_AUTH_PROXY=true APPLICATION_SETTINGS=$(cat temp_settings) python manage.py runserver
Pastikan Anda menghapus file temp_settings
setelah menyelesaikan pekerjaan Anda.
Menghubungkan ke database SQLite lokal
Atau, Anda dapat menggunakan database lokal saat mengembangkan aplikasi. Django mendukung database PostgreSQL dan SQLite, dan ada beberapa fitur yang dimiliki PostgreSQL yang tidak dimiliki SQLite, tetapi dalam banyak kasus, fungsinya identik.
Untuk menyiapkan SQLite, Anda harus memperbarui setelan aplikasi agar mengarah ke database lokal, lalu menerapkan migrasi skema.
Untuk menyiapkan metode ini:
# Create a virtualenv virtualenv venv source venv/bin/activate pip install -r requirements.txt # Copy the application settings to your local machine gcloud secrets versions access latest --secret application_settings > temp_settings # Edit the DATABASE_URL setting to use a local sqlite file. For example: DATABASE_URL=sqlite:////tmp/my-tmp-sqlite.db # Set the updated settings as an environment variable APPLICATION_SETTINGS=$(cat temp_settings) # Apply migrations to the local database python manage.py migrate # Start the local web server python manage.py runserver
Pastikan Anda menghapus file temp_settings
setelah menyelesaikan pekerjaan Anda.
Membuat migrasi
Saat membuat perubahan pada model database, Anda mungkin perlu membuat file migrasi Django dengan menjalankan python manage.py makemigrations
.
Anda dapat menjalankan perintah ini setelah menyiapkan koneksi database produksi atau pengujian. Atau, Anda dapat membuat file migrasi tanpa database dengan memberikan setelan kosong:
SECRET_KEY="" DATABASE_URL="" GS_BUCKET_NAME="" python manage.py makemigrations
Menerapkan update aplikasi
Untuk menerapkan perubahan pada aplikasi, Anda harus:
- membangun perubahan Anda menjadi sebuah {i>image<i} baru,
- terapkan migrasi database atau statis, lalu
- mengupdate layanan Cloud Run untuk menggunakan image baru.
Untuk mem-build image:
gcloud builds submit --pack image=${ARTIFACT_REGISTRY}/myimage
Jika Anda memiliki migrasi untuk diterapkan, jalankan tugas Cloud Run:
gcloud run jobs execute migrate --region $REGION --wait
Untuk mengupdate layanan dengan image baru:
gcloud run services update django-cloudrun \ --region $REGION \ --image ${ARTIFACT_REGISTRY}/myimage
11. Selamat!
Anda baru saja men-deploy project kompleks ke Cloud Run.
- Cloud Run meningkatkan skala image container secara otomatis dan horizontal untuk menangani permintaan yang diterima, lalu menurunkan skala saat permintaan berkurang. Anda hanya membayar untuk CPU, memori, dan jaringan yang terpakai selama penanganan permintaan.
- Cloud SQL memungkinkan Anda menyediakan instance PostgreSQL terkelola yang dikelola secara otomatis untuk Anda, dan terintegrasi secara native ke banyak sistem Google Cloud.
- Cloud Storage memungkinkan Anda memiliki penyimpanan cloud dengan cara yang mudah diakses di Django.
- Dengan Secret Manager, Anda dapat menyimpan secret, dan membuatnya dapat diakses oleh bagian Google Cloud tertentu, bukan yang lainnya.
Pembersihan
Agar tidak menimbulkan biaya pada akun Google Cloud Platform Anda untuk resource yang digunakan dalam tutorial ini:
- Di Cloud Console, buka halaman Mengelola resource.
- Dalam daftar project, pilih project Anda lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Pelajari lebih lanjut
- Django di Cloud Run: https://cloud.google.com/python/django/run
- Halo Cloud Run dengan Python: https://codelabs.developers.google.com/codelabs/cloud-run-hello-python3
- Python di Google Cloud: https://cloud.google.com/python
- Klien Python Google Cloud: https://github.com/googleapis/google-cloud-python