デプロイランタイムバージョン

Node.js、Python、Go、Ruby のバージョンを設定する

lizardpack がプロジェクトをビルドするとき、Lizard (lizard.build) はプロジェクト内のファイルからランタイムのバージョンを読み取ります。Node.js では .nvmrc または engines.node、Python では .python-version または requires-python、Go では go.mod の go 行、Ruby では .ruby-version または Gemfile の ruby 行です。バージョンを変えるには、そのファイルを編集してもう一度デプロイします。該当するファイルがなければ、Lizard は Node.js 22、Python 3.13、Go 1.24、Ruby 3.4 を使います。

テスト状況: 2026-10-12 に、Lizard のビルダーが実行するビルドプランナーである lizardpack をサンプルプロジェクトに対して実行し、このページのすべてのルールを確認しました。

Lizard が参照する場所

言語ファイル(最初に一致したものを使用)使われるバージョンの部分デフォルトベースイメージ
Node.js.nvmrc、.node-version、.tool-versions(nodejs または node)、package.json の engines.nodeメジャー: 20.11.1 → 2022node:<major>-slim
Python.python-version、.tool-versions(python)、pyproject.toml の requires-pythonメジャーとマイナー: 3.12.4 → 3.123.13python:<x.y>-slim
Gogo.mod の go 行メジャーとマイナー: 1.24.3 → 1.241.24ビルドに golang:<x.y>-alpine、実行に alpine:3.19
Ruby.ruby-version、Gemfile の ruby 行メジャーとマイナー: 3.4.1 → 3.43.4ruby:<x.y>-slim

Lizard はパッチ番号を切り捨て、そのバージョン系列の公式イメージタグでビルドします。そのため各ビルドでは、その時点でタグが指している最新のパッチリリースが使われます。

これらのファイルが使われるのは、lizardpack が Dockerfile を生成する場合だけです。Lizard がバージョンファイルを無視する場合 を参照してください。

Node.js のバージョンを変える

echo 24 > .nvmrc
lizard up --service web

GitHub のサービスでは、代わりにファイルをコミットして push します。ルール:

  • 数字で書きます: 24、v24、24.1.0 はいずれも Node.js 24 を選びます。Lizard は # で始まる行を読み飛ばします。
  • Lizard は .nvmrc の lts/* と node を読み飛ばし、次のファイルに進みます。lts/iron などのほかのエイリアスは書かれたとおりに使うため、ビルドが失敗します。
  • .nvmrc は engines.node より優先されます。
  • engines.node では範囲内で最も低いバージョンが使われます: >=18 なら Node.js 18、^20.11.0 なら Node.js 20 でビルドされます。18 || 20 のように || を含む範囲では、ビルドが失敗します。

Python のバージョンを変える

echo 3.12 > .python-version
lizard up --service web
  • .python-version には 3.12 や 3.12.4 のようなバージョン番号を書く必要があります。Lizard は # で始まる行を読み飛ばします。pypy3.10 などのほかの値も読み飛ばし、次のファイルに進みます。
  • requires-python = ">=3.11" は、範囲内で最も低いバージョンである Python 3.11 でビルドされます。
  • ">=3.11,<3.14" のように上限のある範囲では、存在しないイメージ名になり、ビルドが失敗します。.python-version ファイルを追加してください。こちらが優先されます。
  • runtime.txt は読み取られません。

Go のバージョンを変える

go mod edit -go=1.25
lizard up --service api

Lizard が読み取るのは go 行だけで、toolchain 行は読み取りません。

Ruby のバージョンを変える

echo 3.4.1 > .ruby-version
lizard up --service web

番号だけを書いてください。rails new は ruby-3.4.1 と書き込みますが、Lizard は ruby- の接頭辞を取り除かないため、ビルドが失敗します。Gemfile の ruby "~> 3.3.0" のような行は Ruby 3.3 でビルドされます。生成された Dockerfile を残している Rails アプリは、代わりにそのファイルからバージョンを取得します。Rails アプリをデプロイする を参照してください。

Lizard がバージョンファイルを無視する場合

  • 独自の Dockerfile。 その FROM 行で決まります。たとえば FROM node:24-slim です。Dockerfile から Docker コンテナをデプロイする を参照してください。
  • サービスのビルドコマンドまたは開始コマンド。 この場合、Lizard はコマンドから固定のイメージで Dockerfile を生成します。イメージは node:22-alpine、python:3.13-slim、golang:1.24-alpine のいずれかで、コマンドの最初の単語で選ばれます。バージョンファイルを使う状態に戻すには、両方をクリアします:
lizard service set web --set buildCommand= --set startCommand=

稼働中のサービスで buildCommand をクリアすると、再ビルドが自動で始まります。2 回目のビルドをキューに入れないよう、lizard redeploy を実行する前に lizard events を確認してください。ビルドの判定順序 を参照してください。

ビルドで使われたバージョンを確認する

lizard logs --build --service web

ビルドログには、node:24-slim や python:3.12-slim などのベースイメージ名が表示されます。実行時のバージョンを確認するには、アプリの起動時にバージョンを出力し(たとえば Node.js なら process.version、Python なら sys.version)、lizard logs --service web で読みます。

関連項目

更新日