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

推薦する

データベース管理に役立つ 5 つの MySQL GUI ツール

MySQL には多くのデータベース管理ツールがあります。作業効率の向上に役立つ優れた GUI ツール...

一般的なDockerコマンドの詳細な説明

1. ヘルプコマンド1. 現在のDockerバージョンを表示する docker バージョン2. イメ...

マークアップ言語 - Web アプリケーション CSS スタイル

123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...

ウェブページのフォント設定についての簡単な説明

サイト全体のフォントを設定することは、常にシンプルでありながら難しい作業です。深く掘り下げていくと、...

dockerコマンドの使用にはsudoは必要ありません

docker デーモンは通常の TCP ポートではなくホストの Unix ソケットにバインドする必要...

EasyUEFI を使用して Windows 10 で USB ドライブなしで Ubuntu 18 をインストールする

1. BIOSを確認するまず、コンピュータの起動モードを確認します。win+R と入力し、msinf...

VirtualBox での CentOS 8.1 仮想マシンのインストールを最小限に抑える詳細なチュートリアル

1. 関連ツールと画像をダウンロードするダウンロードリンクバーチャルボックス: https://do...

Linuxシステムのログの詳細な紹介

目次1. ログ関連サービス2. システム内の共通ログファイル1. ログ関連サービスCentOS 6....

MySQL ビュー管理ビューの例の詳細説明 [追加、削除、変更、クエリ操作]

この記事では、例を使用して MySQL ビューの管理ビュー操作について説明します。ご参考までに、詳細...

フロントエンドの HTML 知識ポイントのまとめ (推奨)

1. HTMLの概要htyper テキスト マークアップ言語 ハイパーテキスト マークアップ言語ハ...

dockerを使用してdubboプロジェクトをデプロイする方法

1. まず、Springbootを使用して簡単なDubboテストプログラムを構築し、関連する依存関係...

ネイティブ JavaScript 継承方法とその長所と短所の詳細な説明

目次序文プロトタイプ継承アドバンテージ欠点コンストラクタの継承アドバンテージ欠点組み合わせ継承寄生的...

jsは、州、市、地区の3レベルのリンクの非選択ドロップダウンボックスバージョンを実現します。

インターネットで3レベルリンクを検索したところ、すべてオプションで書かれていました。突然、別の方法で...

Dockerコンテナでユーザーを分離する方法

前回の記事「Docker コンテナの UID と GID を理解する」では、Docker コンテナ内...