Ruby 애플리케이션 빌드

Ruby 버전 지정

빌드팩 프로젝트는 Ruby의 현재 출시 버전과 활성 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_VERSIONRUBY 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 빌드팩은 ruby main.rb 명령어를 빌드된 컨테이너의 진입점으로 사용합니다. 기본적으로 Procfile의 web 대상이 사용됩니다.

다른 진입점을 사용하려면 Procfile과 다른 대상을 인수로 지정하면 됩니다.

web: ruby main.rb custom: ruby custom.rb가 포함된 Procfile을 사용합니다.

커스텀 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 빌드팩은 컨테이너를 맞춤설정하기 위해 다음 환경 변수를 지원합니다.

BUNDLE_

bundler 문서 보기

예: BUNDLE_TIMEOUT=60bundle 명령어에 --timeout=60을 설정합니다.