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コンポーネントを書くためのヒント

推薦する

ウェブページでコンテンツを引用するためによく使われるHTMLタグをマスターする

長い引用には blockquote を、短い引用には q を、参考文献には cite を使用します。...

OpenSSL を使用した Kubernetes 証明書の生成の概要

Kubernetes は、基本認証、トークン認証、CA 認証の 3 種類の認証をサポートしています。...

テキスト ファイルの並べ替えに役立つ Awk コマンドラインまたはスクリプト (推奨)

Awk は、ソートを含む他の一般的なユーティリティによって実行できるいくつかのタスクを実行できる強...

DIVマスクを使用して、マウスでチェックボックスを直接チェックすることが無効である問題を解決します

フロントエンドの開発過程で、チェックボックスが必要な状況が発生しました。ユーザー操作の利便性を考慮し...

MySQL スロークエリ: スロークエリを有効にする

1. スロークエリの用途は何ですか? long_query_time を超えて実行されるすべての S...

重要なmysqlログファイルの概要

著者: 丁易出典: https://chengxuzhixin.com/blog/post/mysq...

ネイティブ JS オブジェクト指向タイピング ゲーム

この記事では、JSオブジェクト指向タイピングゲームの具体的なコードを参考までに紹介します。具体的な内...

vsCodeはワンクリックでvueテンプレートを生成します

1. ショートカットCtrl + Shift + Pを使用してコンソールを呼び出します 2、「スニペ...

CSS中級者向けアダプティブレイアウトの5つのソリューションの詳細な説明

序文ページを作っていく上で、ページレイアウトに関する内容に遭遇することが多く、面接でも聞かれることも...

「@INC で ExtUtils/MakeMaker.pm が見つかりません」というエラーを解決する

mha4mysql をインストールする場合の手順は、おおよそ次のようになります: unzip、per...

Dockerはコンテナ外のコンテナ内でコマンドを実行します

コンテナ内でコマンドを実行したいが、コンテナに入りたくない場合があります。ではどうすればいいでしょう...

MySQLがファントムリードを解決する方法の詳細な説明

1. ファントムリーディングとは何ですか?トランザクションにおいて、複数のクエリの後に結果セットの数...

Nginx の純粋な構成でリアルタイム ログ レポートを実現するためのアイデアと方法

目次序文実装のアイデア実装手順1. Nginxをコンパイルする2. 設定ファイルは以下のとおりです要...

Vueコンポーネントが相互に値を転送する方法の詳細な説明

目次概要1. 親コンポーネントが子コンポーネントに値を渡す2. 子コンポーネントが親コンポーネントに...

チャットバブル効果を実現するCSS

1. レンダリングJD効果シミュレーション効果 2. 原則高さと幅が0のボックスを用意しますこのボ...