Dockerfile を使用して Node.js サービスをデプロイする方法

Dockerfile を使用して Node.js サービスをデプロイする方法

Dockerfileを初期化する

プロジェクトの名前が express であると仮定して、express プロジェクトで Dockerfile ファイルを作成して編集します。

$ vim Dockerファイル

ノードから:最新

mkdir -p /home/www/express を実行します。
ワークディレクトリ /home/www/express

コピー . /home/www/express

npmインストールを実行

エクスポーズ3000

エントリポイント ["npm", "run"]
CMD ["開始"]

このファイルには次のコマンドが含まれています。

  • FROM node:latest - ノードベースイメージの最新バージョンを使用することを指定します
  • RUN mkdir -p /home/www/express – コンテナ内に /home/www/express ディレクトリを作成します。
  • WORKDIR /home/www/express - コンテナ内の作業ディレクトリを /home/www/express に設定します
  • COPY . /home/www/express - ホスト上の現在のディレクトリの内容をミラーディレクトリ /home/www/express にコピーします。
  • npm install を実行します - npm install はアプリケーションに必要な NPM パッケージをインストールします
  • EXPOSE 3000 - コンテナのポート3000を外部に開きます
  • ENTRYPOINT ["npm", "run"] - コンテナの起動後に実行するコマンド。 docker run によって提供されるパラメータによって上書きすることはできません
  • CMD ["start"] - コンテナの起動時に実行するコマンド。docker runで提供されるパラメータで上書きできます。

イメージを構築する

Dockerfile ファイルを書き込んだ後、docker build コマンドを使用してイメージをビルドできます。

$ sudo docker build -t test/express 。

-t パラメータを使用して、イメージに test/express という名前を付けます。ビルド プロセスは次のようになります。

ビルドコンテキストを Docker デーモンに送信しています 29.7 kB
ステップ 1/8: registry.src.followme.com:5000/node:v1 から
 ---> c99c549e8227
ステップ 2/8: mkdir -p /home/www/express-app を実行します
 ---> 8be9a90629b0 で実行中
 ---> b9f584851225
中間コンテナ 8be9a90629b0 を削除しています
ステップ 3/8: WORKDIR /home/www/express-app
 ---> 5072c31f9dd9
中間コンテナ e9dbf4ce3d8b を削除しています
ステップ 4/8: コピー . /home/www/express-app
 ---> a4d1725f15ed
中間コンテナ 30aa49765015 の取り外し
ステップ5/8:糸を通す
 ---> f181c243deaa で実行中
糸インストール v1.3.2
[1/4] パッケージを解決しています...
[2/4] パッケージを取得しています...
[3/4] 依存関係をリンクしています...
[4/4] 新しいパッケージを作成しています...
9.46秒で完了しました。
 ---> d390931d73e6
中間コンテナ f181c243deaa を削除しています
ステップ 6/8: EXPOSE 3000
 ---> 94101ab38864 で実行中
 ---> 43199a8a5a90
中間コンテナ 94101ab38864 の削除
ステップ7/8: ENTRYPOINT npm run
 ---> 80b1318962cf で実行中
 ---> 6b203c50e855
中間コンテナ 80b1318962cf を削除
ステップ 8/8 : CMD 開始
 ---> a9909e537f59 で実行中
 ---> d56eae48377c
中間コンテナを削除しています a9909e537f59
d56eae48377c の構築に成功しました

コンテナの実行

イメージがビルドされたら、ビルドされたイメージを使用してコンテナを作成/実行し、Express アプリケーションの Docker デプロイを実現できます。

tets/express イメージを使用してコンテナを実行します。

$ sudo docker run -d --name experss-app -p 3000:3000 test/express

上記の操作では、コンテナを test/express イメージで実行し、コンテナに express-app という名前を付けました。コンテナを実行するときに、コンテナをバックグラウンドで実行するための -d パラメータも指定します。 -p パラメータは、ホストのポート 3000 をコンテナのポート 3000 にマッピングします。コンテナを実行した後、docker ps コマンドを使用して実行中のコンテナを確認できます。これで、localhost:3000 経由でサービスにアクセスできるようになりました。

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

以下もご興味があるかもしれません:
  • Dockerfile の CMD および ENTRYPOINT コマンドの詳細な説明
  • 最高のDockerfileを書く方法
  • Dockerfile の COPY コマンドと ADD コマンドの詳細な説明
  • Dockerfileイメージ構築ファイルとDockerの関連コマンドの詳細な紹介
  • Dockerfile を使用して MySQL イメージを構築し、データの初期化と権限設定を実装する詳細な説明
  • Dockerfile における ENV 命令の具体的な使用法の詳細な説明
  • Dockerfileの使用例
  • 公式 Tomcat イメージを作成するための Dockerfile とイメージの使用方法の詳細な説明
  • Dockerfile の一般的なコマンドの概要
  • Dockerfile を使用して SpringBoot プロジェクトをデプロイする方法
  • Dockerfile を使用して Java ランタイム環境のミラーを作成する方法
  • Dockerfileを使用して独自のイメージを作成する方法
  • Dockerfile 命令 ADD と COPY の紹介
  • Dockerfileにおけるマルチステージ(マルチステージビルド)の詳しい説明
  • Docker の基礎: Dockerfile コマンドの詳細な説明
  • Dockerfile の手順の説明
  • Dockerfile命令VOLUMEの簡単な紹介
  • Dockerfileの簡単な紹介

<<:  Centos6.5 で MySQL 5.7.19 をインストールして設定する方法

>>:  Uniappの小規模プログラム開発経験

推薦する

Vueモバイル端末に最適な適応ソリューションについての簡単な説明

序文: 最近の医療モバイル プロジェクトに基づいて、Vue はさまざまな画面のさまざまな画面サイズに...

Linux サーバー上の hosts ファイル構成の詳細な説明

Linux サーバーのホスト ファイルの構成hosts ファイルは、Linux システム内の IP ...

MySQL の if 関数の正しい使い方の詳細な説明

今日私が書こうとしている内容では、プログラムは 7 時間近く実行され、データベースに 1,000 万...

Dockerコンテナを作成、起動、停止する方法

1. コンテナとは、独立して実行されるアプリケーション、またはアプリケーションのグループとその動作環...

1つのコマンドで、シェルの読み取りコマンドの共通パラメータを理解できます。

Shell で受信パラメータを受信する方法は 2 つあることがわかっています。 1 つはスクリプト...

Win7 での Mysql 5.7.17 winx64 インストール チュートリアル

ソフトウェア バージョンとプラットフォーム: MySQL-5.7.17-winx64、win7 Ho...

MySQL ユーザー権限管理の分析例

この記事では、MySQL ユーザー権限管理の例について説明します。ご参考までに、詳細は以下の通りです...

Vueは時間カウントダウン機能を実装する

この記事では、Vueの具体的なコード例を参考までに紹介します。具体的な内容は以下のとおりです。必要:...

アイデアがWebプロジェクトを公開した後、Tomcatサーバーがプロジェクトとそのソリューションを見つけることができません

概要プロジェクトは正常に作成され、正常にデプロイされましたが、以下に示すように、Tomcat サーバ...

react-color を使用してフロントエンドのカラーピッカーを実装する方法

背景次の図に示すように、 react-color を使用してフロントエンド インターフェースのカラー...

Linuxネットワーク構成ツールの使用

この記事では、RHEL8 のネットワーク サービスとネットワーク構成ツール、およびネットワーク ファ...

NodeとPythonの双方向通信実装コード

目次プロセスコミュニケーションプロセス間の双方向通信問題要約するサードパーティのデータ サプライヤー...

js キャンバスは検証コードを実装し、検証コード機能を取得します

この記事の例では、検証コードを作成して取得するためのjsキャンバスの具体的なコードを共有しています。...

ドラミング効果を実現するJavascript

この記事では、ドラミング効果を実現するためのJavascriptの具体的なコードを参考までに紹介しま...

Centos7.4 環境に lamp-php7.0 をインストールするチュートリアル

この記事では、Centos7.4 環境に lamp-php7.0 をインストールする方法について説明...