Buildpack は、環境変数によって言語固有の構成をサポートしています。
Python のバージョンを指定する
デフォルトでは、Python Runtime Buildpack は Python インタープリタの最新の安定版を使用します。アプリケーションで特定のバージョンが必要な場合は、アプリケーションのルート ディレクトリに .python-version
ファイルを配置してそのバージョンを指定します。
3.13
GOOGLE_PYTHON_VERSION
を使用する
GOOGLE_PYTHON_VERSION
環境変数に Python バージョンを指定することもできます。両方が構成されている場合、GOOGLE_PYTHON_VERSION
値が .python-version
ファイルよりも優先されます。.python-version
ファイルと GOOGLE_PYTHON_VERSION
環境変数のどちらも指定されていない場合、デフォルトでは、最新の LTS バージョンの Python が使用されます。
アプリのデプロイ時に Python 3.13 を使用するように Buildpack を構成するには:
pack build sample-python --builder=gcr.io/buildpacks/builder \
--env GOOGLE_PYTHON_VERSION="3.13.x"
project.toml
プロジェクト記述子を使用して、プロジェクト ファイルとともに環境変数をエンコードすることもできます。環境変数を使用してアプリケーションを構築する手順をご覧ください。
pip
で依存関係を指定する
Python Buildpack は、pip を使用したアプリケーションの依存関係の管理をサポートしています。アプリケーションの依存関係は、ルート ディレクトリの requirements.txt
ファイルで宣言する必要があります。
requirements.txt
ファイルには、パッケージごとに 1 行が含まれています。各行にはパッケージ名が含まれます。パッケージ名以外に、リクエストされたバージョンが含まれている場合もあります。詳細については、requirements.txt
のリファレンスをご覧ください。
requirements.txt
ファイルの例を次に示します。
requests==2.20.0 numpy
pip を構成する
環境変数を使用して pip の動作を構成できます。
pack build sample-python --builder=gcr.io/buildpacks/builder \
--env PIP_DEFAULT_TIMEOUT='60'
Artifact Registry のプライベート依存関係
Artifact Registry Python リポジトリでは、Python 関数のプライベート依存関係をホストできます。Cloud Build でアプリケーションをビルドすると、Python Buildpack は Cloud Build サービス アカウントに Artifact Registry 認証情報を自動的に生成します。requirements.txt
には、追加の認証情報を生成せずに、Artifact Registry URL のみを含める必要があります。例:
--extra-index-url REPOSITORY_URL
sampleapp
Flask==0.10.1
google-cloud-storage
アプリケーション エントリポイント
次のセクションでは、Python ビルドパックのデフォルトのエントリポイントについて説明します。
Cloud Run ソースデプロイにおけるエントリポイント
この機能は、Python ランタイムを使用して Cloud Run にソースコードをデプロイする場合にのみ使用できます。この機能は、Cloud Run ソース デプロイ プロセスの外部で pack build
を使用してコンテナ イメージを直接ビルドしている場合は適用されません。
Python ビルドパックは、FastAPI、Gradio、Streamlit などの最新のウェブ フレームワークをサポートしています。
Python バージョン 3.12 以前
Python バージョン 3.12 以前を使用している場合、Python Buildpack はデフォルトで、ワークロードの WSGI HTTP サーバーとして Gunicorn を使用します。Python Buildpack は、デフォルトのエントリポイントを gunicorn -b :8080 main:app
に設定します。
Python バージョン 3.13 以降
Python バージョン 3.13 以降では、Python Buildpack は requirements.txt
ファイルのウェブサーバーまたはフレームワーク構成に基づいて、Cloud Run ソース デプロイのデフォルト エントリポイントを設定します。このデフォルト設定は、Cloud Run functions ではなく、Cloud Run サービス ソースのデプロイにのみ適用されます。
Python ランタイムを使用してソースから Cloud Run サービスをデプロイする場合、ビルドパックは次の方法で Python バージョンとデフォルトのエントリポイントを決定します。
ソースファイルで Python バージョンを指定しない場合、Python Buildpack はデフォルトをサポートされている最新の Python バージョンに設定します。Buildpack は、
requirements.txt
ファイルで構成したウェブサーバーまたはフレームワークに基づいて、デフォルトのエントリポイントを決定します。requirements.txt
ファイルでウェブサーバーまたはフレームワークを指定しない場合、Python Buildpack はデフォルトで Gunicorn をワークロードの WSGI HTTP サーバーとして使用します。Python Buildpack は、デフォルトのエントリポイントをgunicorn -b :8080 main:app
に設定します。Python Buildpack は、
requirements.txt
ファイルで定義されている次の優先順位に基づいて、デフォルトのエントリポイントを設定します。gunicorn
uvicorn
gradio
streamlit
。
ウェブサーバーまたはフレームワークを構成する
requirements.txt
ファイルに含まれる一般的な Python 構成ごとに、ソースから Cloud Run へデプロイする際のデフォルトのエントリポイントを次の表に示します。
プライマリ構成 | デフォルトのエントリポイント | 環境変数 |
---|---|---|
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 |
デプロイの失敗を回避するには、ソースファイルでサポートされている Python バージョンを使用し、requirements.txt
ファイルでウェブサーバーを指定します。
または、次のソース デプロイ コマンドを実行して、エントリポイントを指定することもできます。
gcloud run deploy SERVICE --source . --set-build-env-vars GOOGLE_ENTRYPOINT="ENTRYPOINT"
次のように置き換えます。
- SERVICE: デプロイ先のサービスの名前。
- ENTRYPOINT: ソースコードに使用するデフォルトのエントリポイント。
ソースコードを Cloud Run にデプロイできない場合や、ログにエラーが見つかった場合は、Cloud Run のトラブルシューティング ガイドをご覧ください。
その他すべてのデプロイにおけるエントリポイント
Python Buildpack は、ワークロードのデフォルトの WSGI HTTP サーバーとして Gunicorn を使用します。Python Buildpack でビルドされたアプリは、次を実行した場合と同様に、デフォルト設定で gunicorn
プロセスを開始します。
gunicorn --bind :8080 main:app
アプリケーション エントリポイントをカスタマイズする
Procfile
または環境変数を使用して、アプリケーションの起動コマンドをカスタマイズできます。これは、デフォルトのエントリポイント構成をカスタマイズするために必要になることがあります。
Procfile
を作成するには、ルート ディレクトリのカスタム設定を使用します。例:
web: gunicorn --bind :$PORT --workers 1 --threads 8 --timeout 0 main:app
また、pack
コマンドで GOOGLE_ENTRYPOINT
環境変数を使用することもできます。例:
pack build sample-python \
--builder gcr.io/buildpacks/builder
--env "GOOGLE_ENTRYPOINT='gunicorn --bind :$PORT main:app'"
環境変数
Python Buildpack は、コンテナをカスタマイズするために次の環境変数をサポートしています。
PIP_<key>
pip のドキュメントをご覧ください。
例: PIP_DEFAULT_TIMEOUT=60
は pip
コマンドに --default-timeout=60
を設定します。