Dockerfile
ウェブアプリケーションサーバーでは、Dockerfileを使用してコンテナイメージをセットアップすることができます。Dockerfileを使用することで、細かなコントロールが可能になり、同時にほぼ全ての言語を使用することができます。そのため、NixpacksやBuildpacksがサポートする言語に制限されることはありません。
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の公式イメージ)のバッジが付いているものを探し、ベストプラクティスに準拠した安全で文書化されたイメージを選択してください。