Python アプリケーションの構築

Buildpack は、環境変数によって言語固有の構成をサポートしています。

Python バージョンの指定

デフォルトでは、Python Runtime Buildpack は Python インタープリタの最新の安定版を使用します。アプリケーションで特定のバージョンが必要な場合は、アプリケーションのルート ディレクトリに .python-version ファイルを配置してそのバージョンを指定します。

3.9.9

GOOGLE_PYTHON_VERSION の使用

GOOGLE_PYTHON_VERSION 環境変数に Python バージョンを指定することもできます。両方が構成されている場合、GOOGLE_PYTHON_VERSION 値が .python-version ファイルよりも優先されます。.python-version ファイルと GOOGLE_PYTHON_VERSION 環境変数のどちらも指定されていない場合、デフォルトでは、最新の LTS バージョンの Python が使用されます。

アプリのデプロイ時に Python 3.10 を使用するように Buildpack を構成するには:

pack build sample-python --builder=gcr.io/buildpacks/builder \
  --env GOOGLE_PYTHON_VERSION="3.10.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 Buildpack は、ワークロードのデフォルトの WSGI HTTP サーバーとして Gunicorn を使用します。Python Buildpack でビルドされたアプリは、次を実行した場合と同様に、デフォルト設定で gunicorn プロセスを開始します。

gunicorn --bind :8080 main:app

アプリケーション エントリポイントのカスタマイズ

Gunicorn のデフォルトとエントリポイントのデフォルトをオーバーライドし、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=60pip コマンドに --default-timeout=60 を設定します。