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 → 20 | 22 | node:<major>-slim |
| Python | .python-version、.tool-versions(python)、pyproject.toml の requires-python | メジャーとマイナー: 3.12.4 → 3.12 | 3.13 | python:<x.y>-slim |
| Go | go.mod の go 行 | メジャーとマイナー: 1.24.3 → 1.24 | 1.24 | ビルドに golang:<x.y>-alpine、実行に alpine:3.19 |
| Ruby | .ruby-version、Gemfile の ruby 行 | メジャーとマイナー: 3.4.1 → 3.4 | 3.4 | ruby:<x.y>-slim |
Lizard はパッチ番号を切り捨て、そのバージョン系列の公式イメージタグでビルドします。そのため各ビルドでは、その時点でタグが指している最新のパッチリリースが使われます。
これらのファイルが使われるのは、lizardpack が Dockerfile を生成する場合だけです。Lizard がバージョンファイルを無視する場合 を参照してください。
Node.js のバージョンを変える
echo 24 > .nvmrc
lizard up --service webGitHub のサービスでは、代わりにファイルをコミットして 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 apiLizard が読み取るのは 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 で読みます。
関連項目
更新日