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の小規模プログラム開発経験

推薦する

JavaScript の 3 つの BOM オブジェクト

目次1. 場所オブジェクト1. URL 2. 場所オブジェクトのプロパティ3. ロケーションオブジェ...

MacにMySQLをインストールするときに初期パスワードを忘れた場合の対処方法

パスワードを忘れると困ります。Mac に MySQL をインストールするための初期パスワードを忘れて...

JavaScript が Jingdong の虫眼鏡の特殊効果を模倣

この記事では、Jingdong虫眼鏡を模倣したJavaScriptの具体的なコードを参考までに共有し...

mysql 複数テーブル接続削除関数の削除

単一のテーブルを削除する: tableName から columnName = value を削除し...

選択/フォーカス時にすべてのオプションをリストする現在のより良い方法

開発中にこのような要件に遭遇したので、将来使用するために記録しました。需要背景キーボード ショートカ...

Dockerを使用してクローンリポジトリを使用してGitイメージを構築する

概要私は 1 年以上 Docker を使用しています。最近、サービスをすばやくオーケストレーションし...

マークアップ言語 - アンカー

前: マークアップ言語 - フレーズ要素 オリジナルソース 第 7 章 アンカーHTML のリンクの...

Linux 上の Nginx に複数のバージョンの PHP をインストールする

サーバーの LNPM 環境をインストールして構成する場合、複数のバージョンの PHP の共存を考慮す...

img 画像タグに alt 属性を付与する必要がありますか?

img 画像タグに alt 属性を追加しますか?画像 img タグの alt 属性を見落とすことはよ...

Postman に基づく HTTP インターフェース テスト プロセスの分析

偶然、素晴らしい人工知能のチュートリアルを発見したので、みんなと共有せずにはいられませんでした。この...

Zabbix は MySQL インスタンス メソッドを監視します

1. 監視計画監視項目を作成する前に、何を監視するのか、どのように監視するのか、監視データをどのよう...

Win7 x64 に解凍版の mysql 5.7.18 winx64 をインストールするとサービスが起動できない問題を解決します

今日、mysql の公式サイトから mysql-5.7.18-winx64.zip をダウンロードし...

ブラウザのURLの前に小さなアイコンを表示する方法

多くのウェブサイトを閲覧すると、ブラウザのアドレスバーの前に小さなアイコンがあり、ブラウザのタブの位...

Jenkins+tomcat の自動ホットデプロイメント/再起動と発生した問題の解決策 (推奨)

1. 背景同社のプロジェクトは、これまでは手動で Maven でパッケージ化し、サーバーにアップロ...

Linux での MySQL のインストールに関するチュートリアル

目次1. 古いバージョンを削除する2. サーバーのカーネルタイプを確認し、適切なバージョンをダウンロ...