弊社では、リポジトリに基づいてアプリケーションのコンテナイメージを自動的に作成する手段の一つとして、Railwayによって開発、保守管理されているオープンソースプロジェクト「Nixpacks」をご利用いただけます。Nixpacksは、アプリケーションのデプロイ時に実行されるスクリプトで、アプリケーションの依存関係をインストールし、環境を設定します。

Nixpacksにはリソースの消費量が少ない、20以上の言語をサポートしているなどのメリットがあります。アプリケーションの追加時に選択するか、アプリケーションの設定(「設定」>「基本情報」>「情報を編集」)でビルド環境オプションを変更し使用することができます。

サポート言語

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

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

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

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

Nixpacksやビルドパックでサポートされていない言語を使用する場合は、Dockerfileが必要になります。アプリケーションを追加する際、「Dockerfileを使用してコンテナイメージを設定」を選択してください。

Nixpacksの設定

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

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

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

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

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
Scala Scalaには、他のコンパイラ言語とは異なり、特定のデフォルトバイナリパスがありません。Scalaプログラムをコンパイルすると、Java仮想マシン(JVM)上で動作するバイトコードが生成されます。

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

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

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

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

関連ドキュメント