Nixpacks

弊社では、Railwayによって保守管理されているオープンソースプロジェクト「Nixpacks」を使用して、リポジトリに基づいてアプリケーションのコンテナイメージを自動作成します。Nixpacksはアプリケーションのデプロイ時に実行されるスクリプトで、アプリケーションの依存関係をインストールし、環境を設定します。少ないリソースで20以上の言語をサポートしています。

現在BuildpacksまたはDockerfileを使用している場合は、アプリケーションの「設定」画面でNixpacksに変更可能です(「設定」>「基本情報」>「情報を編集」)。

サポート言語

Nixpacksでは、以下の言語がサポートされています。

  • Clojure
  • Cobol
  • Crystal
  • C#/.NET
  • Dart
  • Deno
  • Elixir
  • F#
  • Go
  • Haskell
  • Java
  • Lunatic
  • Node.js
  • PHP
  • Python
  • Rust
  • Swift
  • Scala
  • Zig

異なるバージョンを使用するには、アプリケーションのファイルでバージョンを指定してください。

Nixpacksを使用する際、通常ビルド用のサービスは自動的に検出されるため、選択や追加は不要です。サービスを選択、変更したい場合には、Nixpacksの設定ファイルで定義してください。

Nixpacksやビルドパックでサポートされていない言語を使用する場合は、Dockerfileが必要になります。

Nixpacksの設定

アプリケーションによっては設定が不要なものもありますが、実行に以下のようなコマンドや設定が必要になることもあります。

環境変数─アプリケーションを実行するために、特定の環境変数の設定が必要になることがあります。

プロセス─ウェブプロセスコマンドは自動検出されますが、必要に応じて変更し、追加のプロセスを定義することができます。

Procfileでのプロセス─必要に応じて、アプリケーションのコード内のProcfileでプロセスを定義することができます。

ビルドの設定

リポジトリにnixpacks.tomlファイルを追加することで、Nixpacksが生成する最終的なDockerイメージをカスタマイズすることができます。この設定ファイルを使用すると、プロバイダーの追加指定、追加パッケージのインストール、ビルドコマンドの編集、startコマンドの上書き、さらには新規ビルドフェーズの定義が可能になり、ビルドプロセスと生成されるイメージをよりきめ細かく制御可能です。

nixpacks.tomlファイルの設定方法の詳細は、Nixpackの公式ドキュメントをご覧ください。

Nixpacksとpnpm

Nixpacksでpnpmを使用する場合は、PNPM_HOMEに以下の場所を使用します。

ENV PNPM_HOME="/app/.pnpm"

Nixpacksのバイナリディレクトリ

Nixpacksでは、バイナリディレクトリがアプリケーション言語デフォルトのバイナリディレクトリと異なる場合があります。一般的な言語で使用されるバイナリディレクトリには、以下のようなものがあります。

言語ディレクトリ
Node.js/nix/var/nix/profiles/default/bin/node
Ruby/nix/var/nix/profiles/default/bin/ruby
Python/nix/var/nix/profiles/default/bin/python
Java/nix/var/nix/profiles/default/bin/java
ScalaScalaには、他のコンパイラ言語とは異なり、特定のデフォルトバイナリパスがありません。Scalaプログラムをコンパイルすると、Java仮想マシン(JVM)上で動作するバイトコードが生成されます。

コンパイルされたScalaクラスは、通常コードのパッケージ構造を反映したディレクトリ構造に格納されます。Javaのクラスが構成される方法と似ています。デフォルトでは、Scalaのソースファイルをコンパイルすると、コンパイルされた.classファイルは、ソースコードと同じディレクトリ(パッケージ宣言に基づくサブディレクトリ構造内)に配置されます。

必要に応じて、Nixpackの代わりにDockerfileを使用して、Scalaのランタイムツールをインストールすることができます。

PHP/nix/var/nix/profiles/default/bin/php
GoGoには、他のコンパイラ言語とは異なり、特定のデフォルトバイナリパスがありません。Goプログラムをコンパイルすると通常、結果のバイナリ実行ファイルは、ソースコードと同じディレクトリにデフォルトで配置されます。

必要に応じて、Nixpackの代わりにDockerfileを使用して、Goのランタイムツールをインストールすることができます。

Nixpacksの言語バージョンを設定する

Nixpacksを使用してコンテナイメージを設定」を選択すると、アプリケーションのコードでバージョンを指定しない場合、Nixpacksは最新バージョンを使用します。異なる言語バージョンを使用するには、アプリケーションのファイルまたは環境変数でバージョンを指定してください。

バージョンの設定方法は、お使いのプログラミング言語によって異なります。以下に、現在サポートされている言語の例をご紹介します。

Go

Goのバージョンを指定するには、アプリケーションのgo.modファイルに以下を記述します。

go 1.18

Java

Javaのバージョンを指定するには、ビルドプロセス中にこの変数が利用可能であることを確認した上で、NIXPACKS_JDK_VERSION環境変数を設定します。

Gradleを使用している場合は、ビルドプロセス中にこの変数が利用可能であることを確認した上で、NIXPACKS_GRADLE_VERSION環境変数を設定します。

Node.js

Node.jsのバージョンを指定するには、次のいずれかを実行します。

アプリケーションのpackage.jsonファイルに以下を貼り付けてください。

"engines": {
"node": "18"
}

ビルドプロセス中にこの変数が利用可能であることを確認した上で、NIXPACKS_NODE_VERSION環境変数を設定してください。

PHP

PHPのバージョンを指定するには、アプリケーションのcomposer.jsonファイルに以下を貼り付けてください。

{
  "require": {
    "php": "8.2"
  }
}

Python

Pythonのバージョンを指定するには、以下のいずれかを実行します。

  • アプリケーションのruntime.txtファイルに以下を記述します。
    python-3.10.6
  • リポジトリの.python-versionファイルに以下を記述します。
    3.10.6
  • ビルドプロセス中にこの変数が利用可能であることを確認した上で、NIXPACKS_PYTHON_VERSION環境変数を設定してください。

Ruby

Rubyのバージョンを指定するには、アプリケーション内の.ruby-versionファイルに以下を記述します。

3.0.6

Scala

Scalaのバージョンを指定するには、アプリケーションのbuild.sbtファイルに以下を記述します。

scalaVersion := "3.2.2"
この記事は役に立ちましたか?

© 2013 - 2025 Kinsta Inc. 著作権所有。Kinsta®、MyKinsta®、DevKinsta®はKinsta Inc.が所有する登録商標です。登録商標WordPress®はWordPress Foundationの知的財産であり、登録商標Woo®並びにWooCommerce®はWooCommerce, Inc.の知的財産です。WordPress®、Woo®、WooCommerce®の当ウェブサイトでの使用は識別のみを目的としておりWordPress FoundationまたはWooCommerce, Inc.による推奨や承認を意味するものではありません。KinstaはWordPress FoundationまたはWooCommerce, Inc.により認定、所有されておらず、関連会社でもありません。 法的事項はこちらをご覧ください。