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 テーブルインライン形式の詳細な説明

インライン形式<colgroup>...</colgroup>属性名 属性値...

スライドドアを実装するための CSS サンプルコード

いわゆるスライディングドアテクノロジーとは、さまざまな長さのテキストに合わせてボックスの背景を自動的...

SQLデータベースの14の事例の紹介

データシート /* Navicat SQLite データ転送 ソースサーバー: school ソース...

MySQL イベント スケジューラに関するよくある話 (必読)

概要MySQL には独自のイベント スケジューラもあり、これは Linux の crontab ジョ...

忘れられたMySQLパスワードとログインエラーの問題について簡単に説明します

MySQL ログイン パスワードを忘れた場合、解決方法は実はとても簡単です。MySQL メイン構成フ...

一般的なCSS3アニメーションの実装方法

1. 何ですかCSS アニメーションは、CSS を使用して拡張マークアップ言語 (XML) 要素をア...

要素テーブルヘッダー行の高さの問題の解決

目次序文1. 問題の原因2. 解決策VueはelementUIテーブルtr thの高さと背景色を変更...

雨滴効果を実現する JavaScript キャンバス

この記事の例では、雨滴効果を実現するためのキャンバスの具体的なコードを参考までに共有しています。具体...

Vueカスタム命令の詳細な説明

目次Vueカスタムディレクティブカスタムディレクティブフック機能出力関連属性アプリケーション例要約す...

MySQL の最適化: 高品質の SQL 文を書く方法

序文インターネット上にはデータベースの最適化に関する情報や方法が数多くありますが、その多くは品質にば...

MySQL データの集約とグループ化

多くの場合、データを実際に取得せずに要約する必要があり、 MySQLこの目的のために特別な関数を提供...

ウェブページの画像最適化ツールと使用方法のヒントの共有

ウェブページの基本要素として、画像はページの読み込み速度に影響を与える重要な要素の 1 つです。画像...

MySQL 全体または単一のテーブルデータのエクスポート

単一のテーブルをエクスポートするmysqldump -u ユーザー -p db名 テーブル名 >...

ウェブページでグレーまたはブラックモードを実現するための CSS3 フィルターコード

フロントエンドcss3 フィルターは、Web ページのグレー効果を実現できるだけでなく、ナイト モー...

Linux yum パッケージ管理方法

導入yum (Yellow dog Updater, Modified) は、Fedora、RedH...