Docker で最初のアプリケーションをデプロイする方法

Docker で最初のアプリケーションをデプロイする方法

前回の記事では、Docker Desktop をインストールし、Kubernetes を有効にしました。次に、コンテナ化された形式でアプリケーションをデプロイできます。通常、開発ワークフローには次の内容が含まれます。

1. まず、アプリケーションの各コンポーネントごとに個別のコンテナを作成してテストするための Docker イメージを作成します。

2. コンテナとサポート インフラストラクチャを完全なアプリケーションに組み立てます。これは、Docker スタック ファイルまたは Kubernetes YAML を使用して実現できます。

3. 完全なコンテナ化されたアプリケーションをテスト、共有、およびデプロイします。

この投稿では、このワークフローのステップ 1、つまり既存のコンテナに基づいてイメージを作成する方法に焦点を当てます。 Docker イメージは、コンテナ化されたプロセスが実行されるプライベート ファイルシステムをキャプチャすることに注意してください。アプリケーションの実行に必要なものを正確に含むイメージを作成する必要があります。

以下で説明するイメージの構築方法を学べば、コンテナ化された開発環境は従来の開発環境よりも簡単にセットアップできます。これは、コンテナ化された開発環境では、アプリケーションに必要なすべての依存関係が Docker イメージ内に分離されるためです。開発コンピューターには、Docker 以外に何もインストールする必要はありません (つまり、開発環境の展開は Docker イメージのみに依存します)。この方法では、開発マシンの環境を変更することなく、さまざまなスタック用のアプリケーションを簡単に開発できます。

構成

1. GitHub からデモンストレーション用のサンプル プロジェクトをクローンします。

git clone -b v1 https://github.com/docker-training/node-bulletin-board
cd ノード掲示板/掲示板アプリ

これは node.js で書かれたシンプルな掲示板アプリケーションです。この例では、このアプリケーションを作成し、それをコンテナにデプロイしようとしていると仮定します。ディレクトリ構造を図 1.1 に示します。

図1.1

Dockerfile というファイルを見てください。このファイルには、コンテナのプライベート ファイル システムを組み立てる方法が記述されており、このイメージに基づいてコンテナを実行する方法を説明するメタデータも含まれています。掲示板アプリケーションの Dockerfile を図 1.2 に示します。

図1.2

コンテナ化されたアプリケーションをデプロイする最初のステップは、Dockerfile を作成することです。これらの Dockerfile コマンドは、イメージを作成するための単一のステップと考えることができます。手順は次のとおりです。

1. このビルドのベース イメージとして、バージョン番号 6.11.5 のイメージを使用します。 6.11.5 基本イメージはnode.js公式から提供されたイメージです

2. イメージファイルシステムの作業ディレクトリを/usr/src/appに指定します。つまり、このイメージに基づいて作成されたコンテナにログインするたびに、ディレクトリは自動的に/usr/src/appに切り替わります。

3. package.json ファイルをイメージの現在の場所 (/usr/src/app/package.json) にコピーします。

4. イメージ ファイル システムで npm install コマンドを実行します (package.json を読み取ってアプリケーションのノード依存関係を判別し、インストールします)

5. アプリケーションの残りのソース コードをホストからイメージにコピーします。

これらの手順は、ホスト上でアプリケーションをセットアップしてインストールする場合とほぼ同じですが、Dockerfile を使用すると、ポータブルなスタンドアロンの Docker イメージ (公式の Node.js イメージ) で再度ビルドできます。

上記の手順ではイメージのファイル システムを構築しますが、Dockerfile には CMD コマンド ラインというもう 1 行があります。 CMD ["実行するプログラム", "パラメータ 1", "パラメータ 2"] は、コンテナの起動時に実行するコマンドまたはスクリプトを指定します。Dockerfile 内のコマンドは、このイメージに、サポートするコンテナ化されたプロセスが npm start であることを伝えます。

注意: Dockerfile には CMD コマンドを 1 つだけ含めることができます。コマンドが複数ある場合は、最後のコマンドが実行されます。

Dockerfile は常に FROM コマンドで始まります。上記は単純な Dockerfile です。Dockerfile の詳細な手順については、Dockerfile リファレンスを参照してください。

イメージをビルドしてテストする

ソース コードと Dockerfile が用意できたので、最初のイメージをビルドし、そのイメージから起動されたコンテナーが期待どおりに動作することを確認します。

注: この例では Linux コンテナを使用します。 Docker Desktop を使用するユーザーの場合は、システム トレイの Docker ロゴを右クリックして、環境で Linux コンテナーが実行されていることを確認します。実行されていない場合は、[Linux コンテナーに切り替える...] をクリックします。図 1.3 に示すように、現在のデモ環境ではすでに Linux コンテナーが使用されています。

図1.3

1. Powershellに入り、図1.4に示すように、現在のディレクトリがnode-bulletin-board/bulletin-board-appであることを確認し、コマンドを実行します。

# docker イメージビルド -t bulletinboard:1.0 。 

図1.4

ビルドの最後に、イメージが正常にビルドされたことを示す次のメッセージが出力されます。

49f9b9fb7daf を正常に構築しました

掲示板のタグ付けに成功しました:1.0

上記のコマンド リストは、図 1.5 に示すように、タグ 1.0 を持つ bulletinboard という名前のイメージを作成します。

図1.5

2. 掲示板イメージに基づいて bb という名前のコンテナを実行し、コンテナの内部ポート 8080 をホスト マシンのポート 8000 にマッピングしてバックグラウンド モードで実行します。

# docker コンテナを実行 --publish 8000:8080 --detach --name bb 掲示板:1.0

次のコマンドを使用して、実行コマンドに続くパラメータを確認できます。

# docker コンテナ実行 --help

コンテナにログインすると、図 1.6 に示すように、現在のディレクトリが Dockerfile で設定された作業ディレクトリであることがわかります。

図1.6

3. http://localhost:8000 からアプリケーションにアクセスします。図 1.7 に示すように、次のインターフェイスが表示されます。これは、アプリケーション コンテナーのデプロイメントが成功したことを意味します。次の手順は、テスト、ビルド、公開、共有です。

図1.7

4. コンテナを削除すると、コンテナのライフサイクルが終了します。

# docker コンテナ rm --force bb

要約する

上記の設定により、アプリケーションの簡単なコンテナ化を実行し、アプリケーションがコンテナ内で正常に実行されていることを確認できました。次のステップでは、Kubernetes 上でコンテナを実行および管理する方法を記述する Kubernetes yaml ファイルを作成します。

さらに、Dockerfile を使用してイメージを構築する実践を強化する必要があります。

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

以下もご興味があるかもしれません:
  • Docker で Tomcat および Java アプリケーションをデプロイする詳細な手順
  • Docker 上で Python アプリケーションをデプロイするためのチュートリアル
  • Go をセットアップして Docker でアプリケーションをデプロイする方法の詳細な説明
  • Docker を使用して Spring Boot アプリケーションをデプロイする例
  • Docker を使用して Spring Boot Maven アプリケーションをデプロイする方法
  • Docker で Django アプリケーションをデプロイする例
  • Docker で Tomcat を使用して Web アプリケーションを迅速にデプロイする方法の例
  • Docker を使用してフロントエンド アプリケーションをデプロイする方法
  • Docker 実践 - Nodejs アプリケーションのデプロイ

<<:  vue_drf は SMS 認証コードを実装します

>>:  Windows での MySQL コミュニティ サーバー 8.0.16 のインストールと構成方法のグラフィック チュートリアル

推薦する

ウェブ計算機を実装するためのjs

HTML、CSS、JS を使用してシンプルな Web 計算機を作成する方法は?コンピュータには次の...

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

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

JavaScript 変数の昇格についての簡単な説明

目次序文1. どのような変数が促進されますか? 2. 可変プロモーションがあるのはなぜですか? (1...

MySQL 整合性制約の定義と例のチュートリアル

目次整合性制約整合性制約の定義整合性制約の分類主キー制約単一の主キーと複合主キーの違い主キーフィール...

MySQL ストレージ エンジンの基礎

前回の記事では、MySQL トランザクションについて説明しました。これで、MySQL トランザクショ...

Reactプロジェクトで要素を使用する方法

React プロジェクトで要素フレームワークを使用するのは今回が初めてです。非常に単純な問題に遭遇し...

Mac での MySQL と Squel Pro の設定

Node.js の人気に応えて、最近、いくつかのサーバー側機能を実装するために Node.js を使...

Vue Element フロントエンドアプリケーション開発 テーブルリスト表示

1. リストクエリインターフェースの効果コード処理ロジックを紹介する前に、まずは感覚的に理解し、レン...

Nodejs は readline を使用してコンテンツ入力を促すサンプルコード

目次序文1. batがjsを実行する2. ターミナルにバージョン番号を入力してパッケージ化コマンドを...

Docker-compose は Docker プライベート ウェアハウスのステップを迅速に構築します

docker-compose.ymlを作成し、次の内容を入力します。 バージョン: '3&#...

Docker ベースの Tomcat クラスタと Nginx ロード バランシングの展開の概要

目次前面に書かれた1. Ngixnイメージの作成2. Java Web (Tomcat) アプリケー...

Docker ケース分析: MySQL データベース サービスの構築

目次1 設定ディレクトリとデータディレクトリを作成する3 イメージからホストに構成ファイルをコピーす...

入力ファイルのカスタムボタンの美化(デモ)

以前にも同じような記事を書いたことがありますが、js スクリプトを使用しており、ファイルパスを表示で...

HTML ページの部分更新の実装コード

イベント応答の更新: 要求されたときのみ更新1. JS HTML DOM または jQuery を介...

Windows 10 無料インストール版の MySQL インストールと設定のチュートリアル

ネットでいろいろ検索してみたところ、Linux システム向けではなく、現在の新しいバージョンと一致し...