提供された回答のリストにこのオプションがないため、2020年の時点で適格なオプション( dockerまたは同等の コンテナープラットフォーム)を追加したいと思います。アプリケーションが安定した環境で動作していることを確認することに加えて、追加のセキュリティ上の利点と改善された移植性があります。
Windows、macOS、およびほとんど/主要なLinuxディストリビューションのDockerサポートがあります。サポートされているプラットフォームへのDockerのインストールは、かなり簡単で、十分に文書化されています。Node.jsアプリケーションのセットアップは、コンテナーに入れてそのコンテナーを実行し、シャットダウン後に再起動されることを確認するのと同じくらい簡単です。
コンテナイメージの作成
アプリケーションがそのサーバーの/home/ me / my-appで利用可能であると仮定して、次のようなコンテンツを含むテキストファイルDockerfileをフォルダー/ home/meに作成します。
FROM node:lts-alpine
COPY /my-app/ /app/
RUN cd /app && npm ci
CMD ["/app/server.js"]
Alpine LinuxでLTSバージョンのNode.jsを実行するためのイメージを作成し、アプリケーションのファイルをイメージにコピーして実行npm ci
し、依存関係がそのランタイムコンテキストと一致していることを確認します。
同じフォルダにコンテンツを含む別のファイル.dockerignoreを作成します
**/node_modules
これにより、ホストシステムの既存の依存関係がコンテナで機能しない可能性があるため、コンテナに注入されるのを防ぐことができます。Dockerfileで提示されたRUN
コマンドはそれを修正しようとしています。
次のようなコマンドを使用してイメージを作成します。
docker build -t myapp-as-a-service /home/me
オプションは、-t
ビルドされたコンテナイメージの「名前」を選択することです。これは、以下の実行中のコンテナーで使用されます。
注:最後のパラメーターは、Dockerfile自体ではなく、そのDockerfileを含むフォルダーを選択することです。オプションを使用して別のものを選択できます-f
。
コンテナを開始
コンテナを起動するには、次のコマンドを使用します。
docker run -d --restart always -p 80:3000 myapp-as-a-service
このコマンドは、アプリがポート3000でリッスンしていて、ホストのポート80で公開することを想定しています。
これは確かに非常に限られた例ですが、良い出発点です。