指定 Ruby 版本
Buildpack 项目支持当前版本和活跃 LTS 版本的 Ruby。旧版 Ruby 也可以使用,但项目可能不会对旧版本主动进行维护。
使用 Gemfile.lock
如果应用使用捆绑器,则应在代码库的根目录中包含 Gemfile.lock。Ruby Buildpack 将自动使用 Gemfile.lock 中锁定的版本。例如,如果您的 Gemfile.lock 包含以下版本:
RUBY VERSION
ruby 3.0.3p0
Buildpack 会自动使用具有最新补丁程序级别的 Ruby 3.0.3。
使用 GOOGLE_RUNTIME_VERSION
如果您未使用捆绑器,则可以使用环境变量指定 Ruby 版本,如下所示:
pack build --builder=gcr.io/buildpacks/builder \
sample-ruby \
--env GOOGLE_RUNTIME_VERSION=3.0.3
您还可以使用 project.toml
项目描述符对环境变量以及项目文件进行编码。请参阅使用环境变量构建应用中的说明。
如果您使用捆绑器,则不能使用 GOOGLE_RUNTIME_VERSION
替换 Gemfile.lock 中的 RUBY VERSION
下指定的版本。
安装依赖项
使用捆绑器
- 捆绑器是默认的软件包管理器
- 将
Gemfile.lock
提交到您的代码库,因为我们会使用 lock 文件来构建应用 - 默认仅安装生产依赖项
捆绑器版本
捆绑器存在已知的兼容性问题。如果您的应用使用捆绑器,由于与 Ruby 和 Rubygem 之间存在各种兼容性问题,我们会更新所构建应用中的 Gemfile.lock 以使用两个受支持的版本中的一个版本。在 BUNDLED WITH
中使用捆绑器 1.* 和 2.* 的所有应用都会标准化为使用捆绑器 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
。