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

推薦する

MySQL 8.0.20 のインストールと設定方法のグラフィックチュートリアル

MySQLのダウンロードとインストール(バージョン8.0.20)のチュートリアルは参考までに、具体的...

MYSQL 文字列強制変換メソッドの例

序文2 つのテーブル内の同じフィールドの型が異なっていたり、エンコード タイプが異なっていたりするた...

MySQLは集計関数を使用して単一のテーブルをクエリします

集計関数データセットに作用し、そのデータセットの値を返します。 count: 統計結果のレコード数。...

クロスドメインの問題を解決するためのNginxの実用的な方法

フロントエンドとバックエンドを分離し、nginxを使用してクロスドメインの問題を解決するフロントエン...

Vue プロジェクトで addRoutes を使用する際の問題の解決策

目次序文1. 404 ページ1. 原因2. 解決策2.白い画面を更新する1. 原因2. 解決策3. ...

mysql インストーラ ウェブ コミュニティ 5.7.21.0.msi インストール グラフィック チュートリアル

この記事の例では、Androidの9グリッド画像を表示するための具体的なコードを参考までに共有してい...

MySQL テーブルとデータベースでデータを分割する方法

目次1. 縦方向のスライス1.1 垂直データベース1.2 垂直テーブル分割2. 水平(横断)セグメン...

win10 64 ビット システムに複数の JDK バージョンをインストールする際の切り替え問題と解決策の概要

コンピューターにmyeclipse2017とidea2017がインストールされているため、ideaが...

IDEA 2020.3.1 で Tomcat をデプロイし、最初の Web プロジェクトを作成するプロセスの詳細な説明

目次Tomcat の紹介Tomcat の展開Web プロジェクトの作成tomcatの設定プロジェクト...

MySQL 5.7.23 のインストールと設定方法のグラフィックチュートリアル

この記事では、参考として MySQL 5.7.23 のインストール チュートリアルを記録します。 1...

Linuxのip netnsコマンドを使用してネットワークポートを分離し、IPアドレスを設定します。

1. 分離マーカーを追加します。 ip netns add fd 2. 指定されたネットワーク カ...

グローバルトーストコンポーネントをカプセル化するVueの完全な例

目次序文1. vue-cliを使う1. Toastコンポーネントを定義する2. main.jsで設定...

XHTML 入門チュートリアル: テキストの書式設定と特殊文字

<br />このセクションでは、XHTML でテキストの書式設定と特殊文字を実装する方法...

jsは多次元配列を1次元配列に変換し、それを並べ替えます

目次まず多次元配列の平坦化についてお話しましょう方法 1: flat()方法 2: 空の文字列を連結...

スタイルを書く際の背景色宣言の重要性

タイトルの通り、ページを修正すると以下のような状況が発生する可能性があります。現在、古いページを改修...