弊社では、Herokuが管理するオープンソースプロジェクト「Buildpacks」を使用し、リポジトリに基づいてアプリケーションのコンテナを自動で作成します。Buildpacksは、アプリケーションのデプロイ時に実行され、依存関係をインストールし、環境を構成するためのスクリプトです。

Buildpacksを使用するには、アプリケーションの追加時に「コンテナイメージを自動で設定」を選択するか、アプリケーションの設定(「設定」>「基本情報」>「情報を編集」)で設定可能です。

対応言語

Buildpacksでは、以下のアプリケーション言語がサポートされています。

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

Buildpacksでサポートされていない言語を使用するには、まずその言語がNixpacksでサポートされているかどうかを確認してください。サポートされていない場合は、Dockerfileを使用します。アプリケーションの追加時に「Nixpacksを使用してコンテナイメージを設定」、または「Dockerfileを使用してコンテナイメージを設定」を選択することができます。

Buildpacksの設定

アプリケーションによっては設定が不要ですが、一部は実行に専用のコマンドや設定が必要なものがあります。

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

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

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

Buildpacksの追加と編集

Buildpacksは、アプリケーションの設定で管理可能です。Buildpacksを追加するには「Buildpacksを追加」を、削除したり、順番を変更したりするには、「Buildpacksを編集」をクリックしてください。

Buildpacksを追加すると、自動的にBuildpacks一覧の最後に追加されます。Buildpacksをドラッグ&ドロップすると、「Buildpacksの編集」画面で順序を変更することができます。

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

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

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

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

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

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

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

関連ドキュメント