Buildpack mendukung konfigurasi bahasa idiomatis melalui variabel lingkungan.
Menentukan versi Python
Secara default, buildpack Python Runtime menggunakan penafsir Python versi stabil terbaru. Jika aplikasi memerlukan versi tertentu, Anda dapat menentukannya dengan menyertakan file .python-version
dalam direktori root aplikasi.
3.13
Gunakan GOOGLE_PYTHON_VERSION
Anda juga dapat menentukan versi Python melalui
variabel lingkungan GOOGLE_PYTHON_VERSION
.
Jika kedua konfigurasi ditetapkan, nilai GOOGLE_PYTHON_VERSION
akan lebih
diprioritaskan daripada file .python-version
. Secara default, jika file
.python-version
dan variabel lingkungan GOOGLE_PYTHON_VERSION
tidak
ditentukan, versi LTS terbaru Python akan digunakan.
Untuk mengonfigurasi buildpack agar menggunakan Python 3.13 saat men-deploy aplikasi Anda:
pack build sample-python --builder=gcr.io/buildpacks/builder \
--env GOOGLE_PYTHON_VERSION="3.13.x"
Anda juga dapat menggunakan deskriptor project project.toml
untuk mengenkode
variabel lingkungan bersama file project Anda. Lihat petunjuk cara
membangun aplikasi dengan variabel lingkungan.
Menentukan dependensi dengan pip
Buildpack Python mendukung pengelolaan dependensi aplikasi menggunakan pip. Dependensi aplikasi Anda harus dideklarasikan dalam file requirements.txt
direktori utama.
File requirements.txt
berisi satu baris per paket. Setiap baris berisi
nama paket, dan secara opsional, versi yang diminta. Untuk detail selengkapnya, lihat
referensi requirements.txt
.
Berikut adalah contoh file requirements.txt
:
requests==2.20.0 numpy
Mengonfigurasi pip
Perilaku pip dapat dikonfigurasi menggunakan variabel lingkungan:
pack build sample-python --builder=gcr.io/buildpacks/builder \
--env PIP_DEFAULT_TIMEOUT='60'
Dependensi pribadi dari Artifact Registry
Repositori Python Artifact Registry
dapat menghosting dependensi pribadi untuk fungsi Python Anda. Saat membangun aplikasi di
Cloud Build, buildpack Python akan otomatis membuat kredensial Artifact Registry
untuk akun layanan Cloud Build.
Anda hanya perlu menyertakan URL Artifact Registry di requirements.txt
tanpa membuat kredensial tambahan. Contoh:
--extra-index-url REPOSITORY_URL
sampleapp
Flask==0.10.1
google-cloud-storage
Titik entri aplikasi
Bagian berikut menjelaskan titik entri default untuk buildpack Python.
Titik entri untuk deployment sumber Cloud Run
Fitur ini hanya tersedia jika Anda men-deploy kode sumber ke Cloud Run dengan runtime Python. Fitur ini tidak berlaku jika Anda membangun image container secara langsung menggunakan pack build
di luar proses deployment sumber Cloud Run.
Buildpack Python mendukung framework web modern seperti FastAPI, Gradio, dan Streamlit.
Python versi 3.12 dan yang lebih lama
Jika Anda menggunakan Python versi 3.12 dan yang lebih lama, buildpack Python secara default menggunakan Gunicorn sebagai server HTTP WSGI untuk workload Anda. Buildpack Python menetapkan titik entri default ke gunicorn -b :8080 main:app
.
Python versi 3.13 dan yang lebih baru
Untuk Python versi 3.13 dan yang lebih baru, buildpack Python menetapkan titik entri default untuk deployment sumber Cloud Run berdasarkan konfigurasi framework atau server web di file requirements.txt
Anda. Setelan default ini hanya berlaku untuk deployment sumber layanan Cloud Run, bukan untuk Cloud Run functions.
Saat Anda men-deploy layanan Cloud Run dari sumber menggunakan runtime Python, buildpack menentukan versi Python dan titik entri default dengan cara berikut:
Jika Anda tidak menentukan versi Python dalam file sumber, buildpack Python akan menyetel default ke versi Python terbaru yang didukung. Buildpack menentukan titik entri default berdasarkan server web atau framework yang telah Anda konfigurasi dalam file
requirements.txt
.Jika Anda tidak menentukan server web atau framework dalam file
requirements.txt
, buildpack Python secara default akan menggunakan Gunicorn sebagai server HTTP WSGI untuk workload Anda. Buildpack Python menetapkan titik entri default kegunicorn -b :8080 main:app
.Buildpack Python menetapkan titik entri default berdasarkan urutan prioritas berikut, seperti yang ditentukan dalam file
requirements.txt
:gunicorn
uvicorn
gradio
streamlit
.
Mengonfigurasi server web atau framework
Untuk setiap konfigurasi Python umum dalam file requirements.txt
, tabel berikut menunjukkan titik entri default saat men-deploy ke Cloud Run dari sumber:
Konfigurasi utama | Titik entri default | Variabel lingkungan |
---|---|---|
gunicorn |
gunicorn -b :8080 main:app |
|
numpy |
gunicorn -b :8080 main:app |
|
fastapi uvicorn |
uvicorn main:app --host 0.0.0.0 --port 8080 |
|
uvicorn gunicorn |
gunicorn -b :8080 main:app |
|
gradio |
python main.py |
GRADIO_SERVER_NAME=0.0.0.0 GRADIO_SERVER_PORT=8080 |
streamlit |
streamlit run main.py --server.address 0.0.0.0 --server.port 8080 |
Untuk menghindari kegagalan deployment, gunakan versi Python yang didukung dalam file sumber Anda, dan tentukan server web dalam file requirements.txt
Anda.
Atau, Anda juga dapat menentukan titik entri dengan menjalankan perintah deployment sumber berikut:
gcloud run deploy SERVICE --source . --set-build-env-vars GOOGLE_ENTRYPOINT="ENTRYPOINT"
Ganti kode berikut:
- SERVICE: nama layanan yang ingin Anda deploy.
- ENTRYPOINT: titik entri default yang ingin Anda gunakan untuk kode sumber.
Jika Anda tidak dapat men-deploy kode sumber ke Cloud Run atau menemukan error dalam log, lihat panduan pemecahan masalah Cloud Run.
Titik entri untuk semua deployment lainnya
Buildpack Python menggunakan Gunicorn
sebagai server HTTP WSGI default untuk workload Anda. Aplikasi yang dibangun dengan buildpack Python
memulai proses gunicorn
dengan setelan default,
mirip dengan menjalankan:
gunicorn --bind :8080 main:app
Menyesuaikan titik entri aplikasi
Anda dapat menyesuaikan perintah memulai aplikasi menggunakan Procfile
atau variabel lingkungan. Anda mungkin perlu melakukannya untuk menyesuaikan konfigurasi titik entri default.
Anda dapat membuat Procfile
dengan setelan kustom di direktori root.
Contoh:
web: gunicorn --bind :$PORT --workers 1 --threads 8 --timeout 0 main:app
Atau, Anda dapat menggunakan variabel lingkungan GOOGLE_ENTRYPOINT
dengan
perintah pack
. Contoh:
pack build sample-python \
--builder gcr.io/buildpacks/builder
--env "GOOGLE_ENTRYPOINT='gunicorn --bind :$PORT main:app'"
Variabel Lingkungan
Buildpack Python mendukung variabel lingkungan berikut untuk menyesuaikan container Anda
PIP_<key>
Lihat dokumentasi pip.
Contoh: PIP_DEFAULT_TIMEOUT=60
menetapkan --default-timeout=60
untuk perintah pip
.