指定 Ruby 版本
Buildpack 專案支援 Ruby 的目前版本和 Active LTS 版本。舊版 Ruby 也提供,但可能不會由專案主動維護。
正在使用 Gemfile.lock
如果應用程式使用 Bundler,則應在存放區的根目錄中放置 Gemfile.lock。Ruby 建構包會自動使用 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
就無法用於覆寫 RUBY VERSION
下 Gemfile.lock 中指定的版本。
安裝依附元件
使用 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
。