指定 Ruby 版本
建構套件專案支援 Ruby 的目前版本和 Active LTS 版本。舊版 Ruby 仍可使用,但專案可能不會主動維護。
正在使用 Gemfile.lock
如果應用程式使用 bundler,存放區根目錄中應有 Gemfile.lock。Ruby Buildpack 會自動使用 Gemfile.lock 中鎖定的版本。舉例來說,如果 Gemfile.lock 包含下列項目:
RUBY VERSION
ruby 3.0.3p0
建構套件會自動使用 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,就無法使用 GOOGLE_RUNTIME_VERSION 覆寫 Gemfile.lock 中 RUBY VERSION 下指定的版本。
安裝依附元件
使用 Bundler
- Bundler 是預設套件管理員
- 由於我們會使用鎖定檔案建構應用程式,因此請將
Gemfile.lock提交至存放區 - 根據預設,系統只會安裝正式版依附元件
Bundler 版本
Bundler 有已知的相容性問題。
如果應用程式使用 Bundler,由於 Ruby 和 Rubygems 有各種相容性問題,我們會更新已建構應用程式中的 Gemfile.lock,改用兩個支援版本之一。在 BUNDLED WITH 中使用 bundler 1.* 和 2.* 的所有應用程式,都會正規化為使用 bundler 1.17.3 和 2.3.15。
指定進入點
使用 Procfile
您可以使用 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。