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 をインストールする方法の詳細なチュートリアル

推薦する

CSS3 Flex エラスティックレイアウトのサンプルコードの詳細な説明

1. 基本概念 //任意のコンテナを Flex レイアウトとして指定できます。 。箱{ ディスプレイ...

仕事の効率を上げるJS略語スキル20選

目次複数の変数を同時に宣言する場合は、1 行に短縮できます。分割代入は複数の変数に同時に値を割り当て...

WeChatミニプログラムユーザー認証による携帯電話番号の取得(getPhoneNumber)

序文ミニプログラムには、ユーザーを取得するための非常に便利な API があり、getPhoneNum...

RedisとMySQLの違いを簡単に説明してください

MySQL はディスクに保存される永続的なストレージであり、取得には一定の IO が伴うことはご存じ...

コピー&ペーストはパッケージングの敵です

OO、デザイン パターン、および多くのオブジェクト指向の原則について話す前に、まず 1 つのことを習...

div の水平レイアウトを両側に揃える 3 つの方法

この記事では、主に、div の水平レイアウトの両側の配置を実装する 3 つの方法を紹介し、それらを共...

React Contextの理解と応用についてお話ししましょう

目次序文React Context の初見コンテキストの使い方コンテキストを直接取得できるいくつかの...

Hタグの定義と注意事項について簡単に説明します

結果から判断すると、タイトルを定義するための固定パターンはなく、すべてむしろランダムな感じがします。...

Linux システムファイル共有 samba 設定チュートリアル

目次sambaをアンインストールしてインストールする新しい共有パスを作成し、権限を設定するSamba...

フォームの「Enter」、「Submit」、「Enter != Submit」を削除する方法

「Enter != Submit」問題を実装するには、通常、「ボタンの種類」と「入力ボックスの数」か...

CentOS 6.5 i386 インストール MySQL 5.7.18 詳細チュートリアル

ほとんどの人はMySQLをコンパイルしてシステムディレクトリに置きますが、私のやり方はコンパイルした...

ROS で Turtlebot3 移動ロボットを制御するための基本的なチュートリアル

中国語チュートリアルhttps://www.ncnynl.com/category/turtlebo...

Linux プログラムの実行中に動的ライブラリをロードできない場合の解決策

Linux でダイナミック ライブラリをロードできません次のような異常事態が発生した場合./test...

MySQL sql99構文の内部結合と非等価結合の詳細な説明

#事例: 従業員の給与水準を照会する 選択 給与、等級 から 従業員 参加する ジョブグレード g ...

CentOS SVN サーバーで複数のプロジェクトを管理する方法

一つの要求一般的に、企業には複数のプロジェクトがあります。SVN サーバーを設定した後は、プロジェク...