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

推薦する

CSS 経由で JS にパラメータを渡す方法

1. CSSを通す必要がある背景CSS におけるメディアクエリの用途は、デバイスサイズの判別、マウス...

CocosCreator でレイヤー管理に常駐ノードを使用する方法

CocosCreator バージョン: 2.3.4ほとんどのゲームにはレイヤー管理機能があり、例えば...

Ubuntu MySQL バージョンが 5.7 にアップグレードされました

数日前、図書館はサーバー(Ubuntu 14.04)にセキュリティ上の脆弱性があり、時間通りに修復さ...

MySQL 単一テーブルクエリの例の詳細な説明

1. データを準備するこのテーブルでは次の操作が実行されます 学生テーブルを作成 ( id int ...

JSはclip-pathを使用して動的領域クリッピング機能を実装します

背景今日、CodePen を閲覧していたところ、非常に興味深い効果を見つけました。 CodePen ...

Docker ベースの nginx ファイル サーバーを構築する方法と手順

1. このマシンに新しい設定ファイルdocker_nginx.confを作成します。 サーバー{ 7...

Vue 仮想 DOM クイックスタート

目次仮想DOM仮想DOMとは何か仮想DOMの役割Vue の仮想 DOM vノードvNodeとはvNo...

Tomcatの各ポートの機能の詳細な説明

tomcat 設定ファイルから、tomcat の起動時にデフォルトで 8080 (8443)、800...

MySQLにログインする際のエラー「ERROR 1045 (28000)」を解決する方法

今日はサーバーにログインして、データベース内のいくつかのものを変更する準備をしました。しかし、パスワ...

デジタル時計効果を実現するJavaScript

この記事の例では、JavaScriptでデジタル時計効果を実装するための具体的なコードを参考までに共...

XHTML 2.0 新機能プレビュー

<br />ブラウザが次世代のXHTMLを処理できるようになる前に、このよりリッチなコン...

WeChatアプレットがフォーム検証を実装

WeChatアプレットフォームの検証、参考までに具体的な内容は次のとおりです。プラグインWxVali...

DockerにRocketMQをインストールするための実装手順

目次1. 画像を取得する2. ブローカーサーバーを作成する3. ブローカーを作成する4. Rocke...

デザイン理論: デザインにおける階層

<br />原文: http://andymao.com/andy/post/80.ht...

Web デザインの経験: 独善的な Web デザイナー

1. ゴミかクラシックか? Web テクノロジーは急速に更新されており、Web サイトのインターフェ...