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. レンダリング 2. ソースコードhtml < 本文 > < div クラス ...

入力タイプ=テキスト値=str を使用するための不完全なソリューション

今日、非常に奇妙な問題に遭遇しました。次のコードを見てください。 SimpleDateFormat ...

MySQL での正規表現置換のための replace と regexp の使用法の分析

この記事では、例を使用して、replace と regexp を使用して MySQL で正規表現を置...

Linux でのログ サーバーの設定に関するグラフィック チュートリアル

序文この記事では、Linux 構成ログ サーバーに関する関連コンテンツを主に紹介し、参考と学習のため...

VMware12 で Ubuntu19.04 デスクトップ版をインストールする (インストール チュートリアル)

1. 実験の説明仮想マシンに、 Ubuntu 19.04オペレーティングシステムを手動でインストー...

Linux で同じバージョンの R を使用して Seurat2 と Seurat3 を同時にインストールするチュートリアル

Seurat は、単一細胞解析用の重量級の R パッケージです。使用したことがある人なら誰でも、その...

Vue3 の emitting と attr の違いの分析

目次結論は実践分析拡張機能要約する結論は親コンポーネントでカスタム イベントが定義されている場合、子...

vue+elementUI で埋め込みテーブルを実装する方法の例

大学 4 年生のときのインターンシップ中に、表内のデータの番号をクリックすると、そのデータの下に新し...

JS の querySelector メソッドと getElementById メソッドの違い

目次1. 概要1.1 querySelector() と querySelectorAll() の使...

Linux は、Deepin がルートユーザーとして Google Chrome ブラウザを起動できない問題を解決します

Deepin がルートユーザーとして Google Chrome ブラウザを起動できない問題を解決す...

Linux で MySQL をインストールして設定する

システム: Ubuntu 16.04LTS 1\公式サイトからmysql-5.7.18-linux-...

MySQL の基本クイックスタート知識のまとめ (マインドマップ付き)

目次序文1. データベースの基礎知識1. データベースとは何ですか? 2. データベースの分類3. ...

HTML CSS3は画像表示効果を引き伸ばさない

1. transform 属性を使用して、画像を拡大せずに表示します (パスの問題は必要に応じて修正...

CSS3 で King of Glory マッチング人員読み込みページを実装する方法

King of Glory をプレイしたことがある人なら、このページの効果をよくご存知でしょう。なぜ...

互換性を維持しながら他のウェブページのデータを適用する iframe の使い方

以下は、Shiji Tiancheng が Tencent KartRider ページを呼び出すため...