Dockerfile

ウェブアプリケーションサーバーでは、Dockerfileを使用してコンテナイメージをセットアップすることができます。Dockerfileを使用することで、細かなコントロールが可能になり、同時にほぼ全ての言語を使用することができます。そのため、NixpacksBuildpacksがサポートする言語に制限されることはありません。

Dockerfile使用時には、その内部にある記述に応じて環境が構築されます。これには言語、付属ソフトウェア、ライブラリのインストール、ポートの設定、ウェブサーバーの起動などのコマンドが必要になります。PORT環境変数は、弊社システムにて自動設定されます。これを定義したり、アプリケーションでハードコーディングにより記述したりする必要はありません。例えば、Node.jsでサーバーポートを参照するには、コード内でprocess.env.PORTを使用してください。

Dockerfileの作成方法に関する詳しい情報は、Dockerの公式ドキュメントをご覧ください。

Dockerfileの設定

Dockerfileを使用するには、アプリケーションの「設定」>「ビルド」画面に移動し、「ビルド環境」セクションの「設定の更新」で変更可能です。

Dockerfileのパス」は、リポジトリルートからの相対的なDockerfileへのパスです。例えば、Dockerfileがリポジトリルートにある場合、このフィールドに「Dockerfile」と入力します。Dockerfileがappという名前のサブディレクトリにある場合は、Dockerfileへのパスとして「app/Dockerfile」と入力します。

Dockerコンテキスト」は、アプリケーションをビルドするためにアクセスする必要があるリポジトリ内のパスとなります。ほとんどのアプリケーションはリポジトリルートからビルドされるので、「コンテキスト」フィールドにリポジトリルート(.)を入力します。アプリケーションをサブディレクトリ(例:app)からビルドするには、そのサブディレクトリのパスとして「app」をフィールドに入力します。

レジストリ認証情報」は、プライベートのDockerイメージにのみ必要になります。MyKinsta画面右上のユーザー名から「企業の設定」>「レジストリ認証情報」から認証情報を追加してください。設定後、このフィールドから認証情報を選択できるようになります。

Dockerfileとpnpm

Dockerファイルでpnpmを使用する場合は、PNPM_HOMEに以下の場所を使用する必要があります。

ENV PNPM_HOME="~/.pnpm"

Dockerfileの例

Dockerfileの例はこちらです。参考としてご活用ください。

FROM node:carbon

LABEL maintainer="Kinsta devs"

# 作業ディレクトリを/appに設定
WORKDIR /app

# カレントディレクトリの内容を/appのコンテナにコピー
COPY . /app

# package.jsonで指定された必要なパッケージをインストール
RUN npm install

# コンテナ起動時にアプリを実行
CMD ["npm", "start"]

Dockerfileを使用してデータベースをホストする

永続ストレージとDockerfileを組み合わせれば、ウェブアプリケーションサーバーでほぼすべてのデータベースを運用することができます。マネージドデータベースサーバーではサポートされていないMicrosoft SQL Serverデータベースもデプロイ可能です。Dockerfileでコンテナ化できるものは、ウェブアプリケーションサーバーでデプロイできます。

データベースのデータを保持するには、永続ストレージが必要です。永続ストレージなしでウェブアプリケーションサーバーにデータベースをデプロイする場合、アプリケーションが再起動されたり再デプロイされたりすると、すべてのデータが失われます。

データベース用のDockerイメージの多くは、Docker Hubで入手可能です。「Docker Official Image」(Dockerの公式イメージ)のバッジが付いているものを探し、ベストプラクティスに準拠した安全で文書化されたイメージを選択してください。

この記事は役に立ちましたか?

© 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.により認定、所有されておらず、関連会社でもありません。 法的事項はこちらをご覧ください。