建構 Ruby 應用程式

指定 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