Docker で Node.js をデプロイする方法

Docker で Node.js をデプロイする方法

序文

プロジェクトでは中間層としてNodeを使用し、Nodeのデプロイにはdockerを使用します。ここではデプロイの要点と手順をまとめて記録します。dockerの導入とインストールについては詳しく説明しません。インターネット上には関連するチュートリアルや記事もたくさんあります。必要に応じて検索して閲覧できます。

プロジェクト構造

`--docker-node
  |-- データ
  |-- サーバー
    |-- アプリ.js
    |-- Dockerファイル
    |-- プロセス.yml
    |-- パッケージ.json
  docker-compose.yml は、

1. Node.jsプログラムを作成する

アプリ

定数 express = require('express');
express() は、定数です。

app.get('/', (req, res) => res.send('hello world!'));

アプリをリッスンする(3008);

2. Dockerfileを作成する

ノード:8.9-alpineから

mkdir -p /usr/src/app を実行します。

ワークディレクトリ /usr/src/app

npm set registry を実行します https://registry.npm.taobao.org/

npmインストールを実行 

コマンド ["./node_modules/pm2/bin/pm2-docker", "process.yml"]

Dockerfile から、pm2-docker を介してノード アプリケーションを実行していることがわかります。PM2 を使用すると、ファイルの変更を監視して、アプリケーションの再起動、ログの保存、その他の効果を実現できます。ここでは、process.yml 構成ファイルが必要です。関連する使用方法については、PM2 ドキュメントを参照してください。

プロセス.yml

アプリ:
 - スクリプト: 'app.js'
  名前: 'dokcer-node'
  実行モード: 'フォーク'
  ウォッチ:本当
  インスタンス: 1
  ログ日付フォーマット: 'YYYY-MM-DD HH:mm Z'
  ignore_watch: ['node_modules']

3. docker-compose.ymlを作成する

実稼働環境では、複数のコンテナを使用することがよくあります。構成ファイルを使用して複数の Docker コンテナを管理し、docker-compose を使用してアプリケーションを起動、停止、再起動することができます。

ドッカーの作成

バージョン: "3.0"
サービス:
 サーバーノード:
  コンテナ名: サーバーノード
  建てる: 
   コンテキスト: ./server
  ボリューム:
   - ./server:/usr/src/app
  ポート:
   - 「3008:3008」
  環境:
   - TZ=アジア/上海

 ポーター:
  画像: portainer/portainer:1.11.4
  コンテナ名: ポーテナー
  さらす:
   - 「9000」
  ポート:
   - 「9000:9000」
  ボリューム:
   - /var/run/docker.sock:/var/run/docker.sock
   - ./data/portainer:/data
  環境:
   - TZ=アジア/上海

4. コンテナを起動する

上記のファイルが作成されたら、次のコマンドを実行してイメージを作成し、コンテナを起動します。

$ docker-compose -f docker-compose.yml アップ -d

5. テスト

1. ローカルポート3008にアクセスする

2. コードが変更されたときのノードの自動再起動機能をテストします。「hello world!」を「restart!!!!」に変更し、ページを再度更新します。

3. Portainer を使用してコンテナを管理します。コマンドラインと比較して、ビジュアル インターフェイスを使用すると、コンテナのログ、コンテナの構成、ステータスを簡単かつ迅速に表示し、コンテナを再起動および削除できます。ローカル ポート 9000 (docker-compese.yml で構成) にアクセスでき、結果は次のようになります。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Node.jsサービスDockerコンテナアプリケーション実践のまとめ
  • docker+jenkins+node.js の自動デプロイメント環境をゼロから構築する方法
  • Dockerはdockerfileを使用してnode.jsアプリケーションを起動します
  • Docker で Node.js を設定する方法
  • Docker を使用して Windows で Node.js 開発環境を展開する方法の詳細な説明
  • Docker に Node.js アプリケーションを素早くデプロイするための詳細な手順
  • Node.js Web アプリケーションを Docker コンテナにパッケージ化する方法

<<:  WeChatアプレット認証ログインを処理するエレガントな方法

>>:  YUM を使用して Linux (CentOS 7) に MySQL 5.7.18 をインストールする方法の詳細なチュートリアル

推薦する

Vueは大画面ページのスクリーン適応を実現します

この記事では、大画面ページのスクリーンアダプテーションを実現するためのVueの具体的なコードを参考ま...

Nginx キャッシュ設定例

Web アプリケーションの開発とデバッグを行う際には、テストのためにブラウザのキャッシュをクリアした...

ウェブページ作成のテスト問題を全て解けますか?

Web ページのデザインに関する質問です。すべてに答えられるでしょうか? 1. 単一選択の質問 (...

Linux IO 多重化 epoll ネットワーク プログラミング

序文この章では、基本的な Linux 関数と epoll 呼び出しを使用して、Linux 上で実行で...

MySQL マスター/スレーブ ステータスを監視するシェル スクリプト

Linuxでシェルスクリプトを共有して、MySQLのマスタースレーブ状態を監視し、エンタープライズW...

MySQLソートにおけるCASE WHENの使用例

序文以前のプロジェクトでは、SQL の CASE WHEN ソート関数が使用されました。ではブログメ...

Vueプロジェクトウォッチで関数が繰り返しトリガーされる問題の解決

目次問題の説明:解決策1解決策2問題の説明:ページ A と B の 2 つがあり、各ページにはget...

HTMLファイルとは何ですか?HTMLファイルを開く方法

HTML は Hypertext Markup Language の略です。現在、ほとんどの Web...

Centos7 の起動プロセスと Systemd での Nginx の起動構成

Centos7 の起動プロセス: 1.post(電源投入時のセルフテスト) 電源投入時のセルフテスト...

VUEのデータプロキシとイベントの詳細な説明

目次Object.defineProperty メソッドのレビューデータブローカーとは何ですか? V...

ローカルストレージにブール型の値を保存する際の落とし穴を解決する

LocalStorageはブール値を保存します今日、ブール値データを保存するために localsto...

MySQLは適切なストレージエンジンを選択します

データベースに関して最もよく聞かれる質問の 1 つは、現在のビジネス ニーズを満たす MySQL の...

MySQL テーブルデータのインポートとエクスポートの例

この記事では、MySQL テーブル データのインポートおよびエクスポート操作について説明します。ご参...