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はストアドプロシージャを通じて文字列を配列に分割します

文字列を配列に分割するには、次の 3 つの MySQL 関数を使用する必要があります。 REVERS...

8桁の割引コードをランダムに生成し、MySQLデータベースに保存します。

現在、多くの企業が割引コードを通じてプロモーションを行っています。今では、8桁の割引コードを実装して...

Navicat を使用してリモート Linux MySQL データベースに接続するときに発生する 10061 不明エラーの詳細な説明

Navicat を使用してリモート Linux MySQL データベースに接続すると、不明なエラー ...

MySQLで自動作成時間と変更時間を設定する方法の例

この記事では、MySQL の自動作成時刻と変更時刻を設定する方法について説明します。ご参考までに、詳...

今日、私は非常に奇妙なクリックの問題に遭遇し、自分で解決しました

...こんな感じで、今日はポップアップウィンドウを作ろうと思ったのですが、バックエンド PHP によ...

CSS コード省略 div+css レイアウト コード省略仕様

略語を使用すると、CSS ファイルのサイズが小さくなり、読みやすくなります。 CSS 省略形の主なル...

Nginx設定ファイルの詳細な説明

Nginx の主な設定ファイルは nginx.conf で、グローバル ブロック、イベント ブロック...

組み込み Linux で QT アプリケーションを再起動する簡単な方法 (QT4.8 qws ベース)

アプリケーション ソフトウェアには通常、次のようなビジネス要件があります。新しいバージョンの APP...

最新の JavaScript で非同期タスクを書く方法

序文この記事では、非同期 JavaScript の進化と、それがコードの記述方法にどのような変化をも...

JavaScript配列の一般的なメソッドの概要

目次1. JavaScriptで配列を作成する方法2. 配列メソッドの概要3. 方法の詳細な説明1....

Ubuntu 基本チュートリアル: apt-get コマンド

序文apt-get コマンドは、Ubuntu システムのパッケージ管理ツールです。パッケージのインス...

Windows 10 で MySql の解凍バージョンをインストールして構成する方法のチュートリアル

Windows 10 で MySql データベースの解凍バージョンをインストールするステップ 1: ...

MySQLの文字セットと検証ルールの詳細な説明

1いくつかの一般的な文字セットMySQL で最も一般的な文字セットには、ASCII 文字セット、ラテ...

MySQL データベース ターミナル - 一般的な操作コマンド コード

目次1. ユーザーを追加する2. ユーザー名とホストを変更する3. パスワードを変更する4. ユーザ...

Centos7サーバーの基本的なセキュリティ設定手順

pingスキャンをオフにする(役に立たないが)まずルートに切り替えるエコー 1 > /proc...