Ruby のバージョンの指定
Buildpack プロジェクトは、Ruby の現在のリリースと Active LTS リリースをサポートしています。古いリリースの Ruby も使用できますが、プロジェクトで積極的にメンテナンスされていない可能性があります。
Gemfile.lock
の使用
アプリケーションで Bundler を使用する場合は、リポジトリのルートに Gemfile.lock が必要です。Ruby Buildpack は、Gemfile.lock にロックされたバージョンを自動的に使用します。たとえば、Gemfile.lock に次のようなエントリがあるとします。
RUBY VERSION
ruby 3.0.3p0
Buildpack は、最新のパッチレベルを含む Ruby 3.0.3 を自動的に使用します。
GOOGLE_RUNTIME_VERSION
の使用
Bundler を使用しない場合は、次のように環境変数を使用して Ruby のバージョンを指定できます。
pack build --builder=gcr.io/buildpacks/builder \
sample-ruby \
--env GOOGLE_RUNTIME_VERSION=3.0.3
project.toml
プロジェクト記述子を使用して、プロジェクト ファイルとともに環境変数をエンコードすることもできます。環境変数を使用してアプリケーションを構築するの手順をご覧ください。
Bundler を使用している場合は、RUBY VERSION
の下にある Gemfile.lock で指定されたバージョンをオーバーライドするために GOOGLE_RUNTIME_VERSION
を使用することはできません。
依存関係のインストール
Bundler の使用
- Bundler はデフォルトのパッケージ マネージャーです
- ロックファイルを使用してアプリをビルドするため、リポジトリに
Gemfile.lock
を commit します。 - デフォルトでは、本番環境の依存関係のみがインストールされます。
Bundler のバージョン
Bundler には、互換性に関する問題が報告されています。アプリケーションで Bundler を使用する場合は、Ruby と Rubygems とのさまざまな互換性の問題により、サポートされている 2 つのバージョンのいずれかを使用するように、ビルドされたアプリの Gemfile.lock が更新されます。BUNDLED WITH
で Bundler 1.* と 2.* を使用するすべてのアプリケーションは、Bundler 1.17.3 と 2.3.15 を使用するように正規化されています。
エントリポイントの指定
Procfile の使用
entrypoint(コンテナの起動時に実行されるコマンド)を指定するには、Procfile を使用します。たとえば、Procfile では、アプリのルートで次のようにします。
web: ruby main.rb
Ruby Buildpack は、ビルドされたコンテナのエントリポイントとして ruby main.rb
コマンドを使用します。デフォルトでは、Procfile からの web
ターゲットが使用されます。
別のエントリポイントを使用するには、Procfile とは異なるターゲットを引数として指定します。
以下を含む Procfile の場合: web: ruby main.rb
custom: ruby custom.rb
Procfile カスタム ターゲットを使用するには、引数として bash
pack build --builder=gcr.io/buildpacks/builder \
sample-ruby \
--entrypoint=custom
を渡します。
GOOGLE_ENTRYPOINT
の使用
Procfile を使用していない場合、または Procfile をオーバーライドする場合は、GOOGLE_ENTRYPOINT
環境変数を使用してエントリポイントを指定できます。次に例を示します。
pack build --builder=gcr.io/buildpacks/builder \
sample-ruby \
--env GOOGLE_ENTRYPOINT="ruby custom.rb"
環境変数
Ruby Buildpack は、コンテナをカスタマイズするために次の環境変数をサポートしています。
BUNDLE_
bundler
のドキュメントをご覧ください。
例: BUNDLE_TIMEOUT=60
は bundle
コマンドに --timeout=60
を設定します。