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

推薦する

Linux での透過的巨大ページの使用と無効化の概要

導入コンピューティングのニーズが拡大し続けるにつれて、アプリケーションのメモリに対する需要も増加して...

同じページを動的にロードするための Vue ルーティングリスニングの例

目次シナリオ分析発達要約するシナリオ分析システムでは、1 つのモジュールに 3 つのサブモジュールが...

インターフェースなしで Centos7 に JDK と Tomcat をデプロイするチュートリアル

1. xshell6をインストールする2. サーバー接続を作成し、ユーザー名とパスワードを入力します...

CSS を使用して画像の下の空白を数ピクセル消去する方法の詳細な説明

最近、友人が私に質問をしました。ページをレイアウトすると、画像の下に 1 ~ 2 ピクセルの空白があ...

win2008 で mysql8.0.11 を mysql8.0.17 にアップグレードする詳細な手順

アップグレードの背景: MySQLの下位バージョンの脆弱性を解決するために、MySQLはMySQL ...

CSS BEM 記述標準の詳細な説明

BEM は、Web 開発に対するコンポーネントベースのアプローチです。ユーザー インターフェイスを独...

MySQL 8.0.13 zipパッケージのインストール方法について

MySQL 8.0.13 にはデフォルトでデータ フォルダがあります。このフォルダを削除する必要があ...

Dockerパッケージイメージの実装と構成の変更

最近、Docker の学習や実際の運用で多くの問題に遭遇したので、それを記録するためにブログを書きま...

Vueで複数の添付ファイルをアップロードする実装例

目次序文コアコードコードのファイル表示部分序文この記事では主に、Vue プロジェクトでの添付ファイル...

JavaScript 円グラフの例

描画効果実装コードJavaScript var キャンバス = document.getElemen...

SQL実装 LeetCode (176. 2番目に高い給与)

[LeetCode] 176. 2番目に高い給与従業員テーブルから 2 番目に高い給与を取得する ...

ウェブ開発で遭遇した問題と経験

<br />以下は開発中に遭遇した問題と、そこから得た経験です。デバッグに時間がかかりま...

HTML テーブルタグチュートリアル (11): 水平方向の配置属性 ALIGN

水平方向では、テーブルの配置を左、中央、右に設定できます。基本的な構文<テーブル配置=&quo...

CSS により、子コンテナが親要素を超えます (子コンテナは親コンテナ内で浮動します)

序文場合によっては、次の図のような浮動効果の要件が必要になります。 成し遂げる標準的な通常の状況では...

JSはBaidu Newsナビゲーションバーの効果を実現

この記事では、Baidu News Navigation Barの効果を実現するための具体的なJSコ...