Dockerはdockerfileを使用してnode.jsアプリケーションを起動します

Dockerはdockerfileを使用してnode.jsアプリケーションを起動します

Dockerfileの作成

expressによって自動的に作成されたディレクトリを例にとると、ディレクトリ構造は次のようになります。

├── /bin
│ └── www
├── /node_modules
├── /公開
├── /ルート
├── /ビュー
├── package-lock.json
├── package.json
├── エコシステム.config.js
├── app.js
└── Dockerファイル

プロジェクトディレクトリに新しいDockerfileファイルを作成します。

ノード:10.15から
メンテナー [email protected]
コピー ./app/
ワークディレクトリ /app
npm install pm2 -g を実行します。
エクスポーズ8003
CMD ["pm2-runtime", "ecosystem.config.js"]
  • FROM は、ベースイメージがノードのバージョン 10.15 であることを指定します (ノードの公式バージョンはここで確認できます)
  • MAINTAINERはイメージのメンテナーを表します
  • COPY コマンドは、ホスト マシンからイメージにファイルをコピーします。形式は COPY [--chown=<user>:<group>] <source path>... <destination path> です。ここでは、プロジェクト ディレクトリ内のすべてのファイルがイメージ内の /app ディレクトリにコピーされます。ターゲット パスが存在しない場合は、Docker によって自動的に作成されます。
  • WORKDIR は、CMD が実行されるディレクトリである作業ディレクトリを指定するために使用されます。
  • RUNコマンドはシェルコマンドを実行するために使用され、ここではpm2のインストールに使用されます。
  • EXPOSE コマンドは、ランタイム コンテナーによって提供されるサービス ポートを宣言するために使用されますが、このポートのサービスは実行時に有効にならないことに注意してください。このコマンドは主に、ミラーサービスのデーモンポートをユーザーが理解できるようにして、構成マッピングを容易にするためのものです。さらに、ランダムポートマッピングを使用する場合、EXPOSEポートを自動的にランダムにマッピングします。
  • CMDはコンテナのメインプロセスのデフォルトの起動コマンドです。

イメージを構築する

プロジェクトディレクトリで実行

ビルドは -t express-app:v1 です。

ビルドが成功したら、ミラーリストを確認してください

Docker イメージ

イメージexpress-app:v1が出力されるはずです

コンテナの実行

docker run -d -p 8003:3000 --name="express-app" express-app:v1

docker run docker createdocker startという 2 つのコマンドの略語です。

  • -d --detachの略で、コンテナをバックグラウンドで実行することを意味します。
  • -p 、ホストとコンテナ間のポート マッピングを指定します。左側はホストのポート、右側はコンテナのポートです。つまり、ホストのポート 8003 にアクセスすると、コンテナのポート 3000 にマッピングされます。
  • --nameはコンテナのエイリアスを設定します。指定しない場合、Docker はtender_swirlesなどの名前をランダムに生成します。

埋め込む

ドッカーps

通常の表示は次のようになります

開始されたすべてのコンテナを表示するには、 -aパラメータを追加します。

コンテナに入る

操作するコンテナに入りたい場合は、以下のコマンドを実行します

docker exec -it express-app bash 

-i-t通常一緒に使用されます。 -i対話モードを開始し、 -t端末を割り当てる必要があることを指定します。どちらか一方を渡さない効果を試すことができます。

execに似たのが、 attachコマンドで、 docker attach express-appです。ただし、stdin から終了するとコンテナが停止するため、 execコマンドを使用することをお勧めします。

クローズ操作

コンテナを停止する

docker 停止 express-app

コンテナの削除

docker rm エクスプレスアプリ

コンテナを削除するときにまだ実行中の場合は、 -fパラメータを追加する必要があります。

画像の削除

docker rmi express-app:v1

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Dockerfileを使用して独自のイメージを作成する方法
  • Dockerfile を使用して Docker でイメージを構築する方法
  • Ideaはプロジェクトのデプロイメントを実装するためにmaven-tomcat-pluginを設定します
  • spring-boot-maven-plugin プラグインの役割の詳細な説明
  • Maven シェード プラグインを使用して Java で実行可能な Jar パッケージを作成する
  • dockerfile-maven-plugin ミニマリスト チュートリアル (推奨)

<<:  MySqlのインストールとアンインストールに関する詳細なチュートリアル

>>:  簡潔なReactコンポーネントを書くためのヒント

推薦する

VantフレームワークをWeChatアプレットに導入するプロセス全体の記録

序文WeChat ミニプログラムのネイティブ UI が少し物足りないと感じることがあるので、サードパ...

JavaScript の手ぶれ補正とスロットリングの詳細な説明

目次デバウンススロットル要約するデバウンス定義: スクロール イベントなど、短時間に連続してトリガー...

JavaScript プロトタイプとプロトタイプチェーンの詳細

目次1. プロトタイプ(明示的なプロトタイプ) 2. __proto__ (暗黙のプロトタイプ) 3...

Dockerの匿名マウントと名前付きマウントの具体的な使用法

目次データ量匿名マウントと名前付きマウントデータボリュームの場所データ量匿名マウントと名前付きマウン...

MySQL の binlog_format モードと設定の詳細な分析

MySQL レプリケーションには、SQL ステートメント ベースのレプリケーション (SBR)、行ベ...

CSS3 のエラスティック レイアウトでの em の使用の概要: 1em は何ピクセルですか?

私は長い間 CSS を使用してきましたが、Web 要素の関連属性を設定するために常に「px」を使用し...

MySQL マスターとスレーブの不整合とその解決策の詳細な説明

1. MySQL マスタースレーブ非同期1.1 ネットワーク遅延MySQLのマスタースレーブレプリケ...

Ubuntu 15.04 は MySQL リモート ポート 3306 を開きます

Ubuntu 15.04 は MySQL リモート ポート 3306 を開きます。以下の操作はすべて...

MySQL で 1 つのテーブルのフィールドを使用して別のテーブルのフィールドを更新する方法

1. 1列を変更する 学生の更新、都市c s.city_name = c.name を設定します こ...

React はモバイル端末を構築するために antd-mobile+postcss を導入しました

antd-mobileをインストールするグローバル輸入 npm をインストール antd-mobil...

Vue プロジェクトでの支払い機能の実装 (WeChat 支払いと Alipay 支払い)

目次プロジェクトにおける一般的な支払い方法Alipay決済微信ペイプロジェクトにおける一般的な支払い...

MySQL で日付時刻データを取得し、その後に .0 を追加する方法

MySQL のデータ型は datetime です。データベースに保存されているデータは 2015-0...

Reactプロジェクトで画像を導入するいくつかの方法

imgタグは画像を導入しますreactは実際にはjsリーダー関数を介してページをレンダリングするため...

Azure Container Registry を使用してイメージを保存する際の問題

Azure Container Registry は、Docker Registry 2.0 仕様に...

Ubuntu システムに Theano と Keras をインストールする方法

注: システムは Ubuntu 14.04LTS、32 ビット オペレーティング システムです。Py...