序文 プロジェクトでは中間層として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 を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: WeChatアプレット認証ログインを処理するエレガントな方法
>>: YUM を使用して Linux (CentOS 7) に MySQL 5.7.18 をインストールする方法の詳細なチュートリアル
1. 基本概念 //任意のコンテナを Flex レイアウトとして指定できます。 。箱{ ディスプレイ...
目次複数の変数を同時に宣言する場合は、1 行に短縮できます。分割代入は複数の変数に同時に値を割り当て...
序文ミニプログラムには、ユーザーを取得するための非常に便利な API があり、getPhoneNum...
MySQL はディスクに保存される永続的なストレージであり、取得には一定の IO が伴うことはご存じ...
OO、デザイン パターン、および多くのオブジェクト指向の原則について話す前に、まず 1 つのことを習...
この記事では、主に、div の水平レイアウトの両側の配置を実装する 3 つの方法を紹介し、それらを共...
目次序文React Context の初見コンテキストの使い方コンテキストを直接取得できるいくつかの...
結果から判断すると、タイトルを定義するための固定パターンはなく、すべてむしろランダムな感じがします。...
目次sambaをアンインストールしてインストールする新しい共有パスを作成し、権限を設定するSamba...
「Enter != Submit」問題を実装するには、通常、「ボタンの種類」と「入力ボックスの数」か...
ほとんどの人はMySQLをコンパイルしてシステムディレクトリに置きますが、私のやり方はコンパイルした...
中国語チュートリアルhttps://www.ncnynl.com/category/turtlebo...
Linux でダイナミック ライブラリをロードできません次のような異常事態が発生した場合./test...
#事例: 従業員の給与水準を照会する 選択 給与、等級 から 従業員 参加する ジョブグレード g ...
一つの要求一般的に、企業には複数のプロジェクトがあります。SVN サーバーを設定した後は、プロジェク...