SpringBoot アプリケーションの Docker デプロイメントの実装手順

SpringBoot アプリケーションの Docker デプロイメントの実装手順

序文

プロジェクトをデプロイするときに、node.js、Redis、RabbitMQ、MySQL などに依存する必要がある場合があります。これらのサービスのデプロイに必要な関数ライブラリと依存関係は異なり、互いに競合する可能性もあります。これにより、展開に大きな困難が生じました。 Docker はこれらの問題を巧みに解決しました。依存関係の互換性の問題を解決するために、Docker は次の 2 つの方法を使用します。

  1. アプリケーションのLibs(関数ライブラリ)、Deps(依存関係)、および構成をアプリケーションと一緒にパッケージ化します。
  2. 相互干渉を避けるために、各アプリケーションを分離されたコンテナ内で実行します。

ここに画像の説明を挿入

この記事では、通常 SpringBoot を使用して開発するプロジェクトを Docker を使用してデプロイする方法について説明します。

ここに画像の説明を挿入

Dockerファイル

Dockerfile とは何ですか?

Dockerfile は、イメージをビルドするために使用されるテキスト ファイルです。テキスト コンテンツには、イメージをビルドするために必要な手順と指示が含まれています。

ここに画像の説明を挿入

Dockerfile 構文

カスタム イメージを構築するときに、各ファイルを 1 つずつコピーしてパッケージ化する必要はありません。

Docker に伝える必要があるのは、イメージの構成、必要な BaseImage、コピーする必要があるファイル、インストールする必要がある依存関係、および起動スクリプトだけです。将来的には、Docker がイメージの構築を支援してくれるでしょう。

上記の情報を記述したファイルがDockerfileファイルです。

Dockerfile は、イメージを構築するために実行する操作を記述した命令が含まれるテキスト ファイルです。各命令はレイヤーを形成します。

ここに画像の説明を挿入

SpringBoot プロジェクトのパッケージ化

準備プロジェクト:

プロジェクトポート

サーバーポート=8080

テンプレートフォルダに新しいindex.htmlを作成します。

<!DOCTYPE html>
<html lang="ja" xmlns:th="http://www.thymeleaf.org">
<ヘッド>
    <メタ文字セット="UTF-8">
    <title>Docker デプロイメント SpringBoot アプリケーション</title>
</head>
<本文>
<h1>SpringBoot アプリケーションの Docker デプロイメント</h1>
<img src="/static/img/2.jpg" alt="" width="100%">
</本文>
</html>

ホームページコントローラを定義してインデックスにジャンプする

@コントローラ
パブリッククラスindexController{

    @リクエストマッピング("/")
    パブリック文字列インデックス(){
        「インデックス」を返します。
    }
}

効果をローカルでプレビューします。

ここに画像の説明を挿入

SpringBootアプリケーションをローカルのjarにパッケージ化する

maven-compiler-pluginプラグインを準備する

<ビルド>
	<!--コンパイルされパッケージ化されたファイル名-->
	<finalName>アプリ</finalName>
	<プラグイン>
		<プラグイン>
			<!--GAV 座標 (G 組織 ID、A プロジェクト ID、V バージョン番号)-->
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-compiler-plugin</artifactId>
			<バージョン>3.8.1</バージョン>
			<!--構成:
		    一般的に言えば、ターゲットとソースは一致していますが、プログラムを他のバージョンの JDK で実行できるようにするため (ターゲット JDK のバージョンが低い場合、ソース コードは、バージョンが低い JDK でサポートされていない構文を使用できません)、ターゲットがソースと異なる状況が発生することがあります -->
			<構成>
				<!-- ソースコードで使用される JDK バージョン -->
				<ソース>1.8</ソース>
				<!-- 生成されるターゲット クラス ファイルのコンパイル済みバージョン -->
				<target>1.8</target>
				<!-- 中国語の文字化けを防ぐための文字セットのエンコード -->
				<encoding>UTF-8</encoding>
			</構成>
		</プラグイン>
	</プラグイン>
</ビルド>

Maven はプロジェクト管理ツールです。コードのコンパイルに使用する JDK バージョンを指定しないと、コンパイル プラグイン maven-compiler-plugin のデフォルトの JDK バージョンが使用され、処理されます。これにより、バージョンの不一致の問題が発生しやすくなり、コンパイルが失敗する可能性があります。たとえば、コードが関数型プログラミングなどの Java 8 の新機能を使用しているが、Maven がコンパイル時に Java 7 を使用する場合、このコードを .class ファイルにコンパイルすることはまったく不可能です。この状況を回避するには、Maven プロジェクトをビルドするときに、最初のステップとして、Maven-compiler-plugin プラグインを構成し、プロジェクト ソース コードの JDK バージョン、コンパイルされた JDK バージョン、およびエンコード方法を指定します。

次にcleanを実行し、最後にpackageを実行してプロジェクトをパッケージ化します。

ここに画像の説明を挿入

BUILD SUCCESS メッセージは、パッケージが正常に完了したことを示します。

ここに画像の説明を挿入

パッケージ化が成功すると、ターゲットフォルダが表示され、パッケージ化されたjarパッケージがディレクトリ内に格納されます。

ここに画像の説明を挿入

jarパッケージとDockerfileを準備する

jar をデスクトップまたはカスタムの場所にコピーし、ローカルで Dockerfile ファイルを作成して書き込みます (注:名字必須為Dockerfile,去掉后綴名)

ここに画像の説明を挿入

Dockerfileの作成

Dockerfileの手順

java:8-alpine より
コピー ./app.jar /tmp/app.jar
エントリポイント java -jar /tmp/app.jar

Dockerfileの説明

java:8-alpine より:

java8 をベースにイメージをビルドします。デフォルトでは、Java イメージをビルドするには、環境変数をインストールして構成する必要があります。java:8-alpine イメージでは、これまでの手順がすべて完了しています。

コピー ./app.jar /tmp/app.jar

jarパッケージをコピーする

エントリポイント java -jar /tmp/app.jar

エントリーコマンド

ツールを使用してjarとDockerfileをサーバーにアップロードします

アップロード場所は個人によって異なります。私は /tmp/docker に保存しています。

一時ファイル
mkdir ドッカー

アップロードファイルを選択

ここに画像の説明を挿入

/tmp/dockerディレクトリにアップロードする

ここに画像の説明を挿入

イメージを構築する

ファイルをアップロードしたディレクトリに移動します: cd /tmp/dockerlsと入力してファイルを表示します

ここに画像の説明を挿入

イメージをビルドするためのコマンドを入力します

docker build -t テスト:1.0 。

格式:docker build -t 鏡像名稱:版本號Dockerfile所在目錄路徑

コマンドの説明:

build : Dockerのセカンダリコマンド

  • イメージを構築する

-t

  • - 名前: 一般的なイメージ名の形式: 名前: バージョン番号 ( test:1.0 )

.

  • Dockerfile が配置されているディレクトリ。Dockerfile が配置されているディレクトリを入力したので、 .は現在のディレクトリを表します。

イメージをビルドするときに、Dockerfileに記述した3つのコマンドに従って3つのステップで実行されることがわかります。

ここに画像の説明を挿入

ミラーを見る

Docker でイメージ コマンドを表示します。

Docker イメージ

カスタム画像テストを見ることができます

ここに画像の説明を挿入

コンテナを作成して実行する

Docker イメージ コマンドを実行します。

docker run --name springboot -p 8080:8080 -d test:1.0

コマンドの説明:

docker run : dockerセカンダリコマンド

  • コンテナを作成して実行する

--name

  • コンテナ名を定義し、その後にコンテナ名 ( springboot ) を続ける

-pポートマッピング

  • 左側のポートはLinuxポート、右側のポートはコンテナのポート番号です
  • Linuxポートをコンテナポート番号にマッピングし、Linuxポートへのアクセスがコンテナポート番号へのアクセスと同じになるようにします。

-d

  • コンテナをバックグラウンドで実行します。そうしないと、コンテナは終了後に実行を停止します。

test:1.0 –>イメージ名

  • コンテナを作成するには、カスタムイメージtestのバージョン1.0を選択します

コンテナが作成され、正常に実行されました。

ここに画像の説明を挿入

実行中の画像を見る

画像コマンドの実行

ドッカーps 

ここに画像の説明を挿入

ブラウザはサーバーのポート8080にアクセスします

ここに画像の説明を挿入

モバイルアクセス:

ここに画像の説明を挿入

ログを表示

コンテナログコマンドの表示

docker ログ -f springboot

例:

コンテナのログを表示しますが、リアルタイムで更新されません。新しいログを表示するには、再度実行する必要があります。

docker ログ + コンテナ名

リアルタイム更新ログ

docker logs -f + コンテナ名

ここに画像の説明を挿入

Docker デプロイ SpringBoot アプリケーション チュートリアルは終了です。

SpringBoot アプリケーションの Docker デプロイメントに関するこの記事はこれで終わりです。SpringBoot アプリケーションの Docker デプロイメントに関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • SpringBoot と Docker の統合の詳細なプロセス
  • Springboot アプリケーションを迅速にデプロイするために Docker とアイデアを統合する詳細なプロセス
  • SpringBoot プロジェクトの Docker クイック デプロイメントの紹介

<<:  HTMLとXHTML、HTML4とHTML5のタグの違いについて簡単に紹介します。

>>:  カルーセルバナーの自動回転効果を実現する純粋な CSS

推薦する

MySQLデータベースでスロークエリログを有効にする方法の詳細な説明

データベースはスロークエリログを有効にします設定ファイルを変更する設定ファイルmy.iniに次の2つ...

MySQL パフォーマンス ストレス ベンチマーク ツール sysbench の使い方の紹介

目次1. sysbenchの紹介#プロジェクトダウンロードアドレス: 2. Sysbenchのインス...

MySQL サーバー IO 100% 分析および最適化ソリューション

序文ストレス テスト中に、リソース使用のボトルネックによって発生する最も直接的なパフォーマンスの問題...

Node-Redを使用してMySQLデータベースに接続する方法

Node-red をデータベース (mysql) に接続するには、まずコンピューターに MySQL ...

MYSQLデータベーステーブル構造の最適化方法の詳細な説明

この記事では、例を使用して、MYSQL データベース テーブル構造を最適化する方法を説明します。ご参...

Docker が MySQL を作成する説明

1. MySQLイメージをダウンロードするコマンド: docker pull mysql 2. コン...

linxu での Svn ワンクリック インストール シェル スクリプトの詳細な説明

#!/bin/bash #SVNをダウンロード yum -y サブバージョンをインストールします ...

JavaScript のクロージャの問題の詳細な説明

クロージャは、純粋関数型プログラミング言語の伝統的な機能の 1 つです。クロージャをコア言語構造の不...

JavaScript オブジェクトの 3 つのプロパティ

目次1. 書き込み可能: 書き込み可能2. 列挙可能: 列挙可能3. 設定可能: 設定可能オブジェク...

Linux プロセスが占有するポート番号を表示する 6 つの方法

Linux システム管理者にとって、サービスがポートに正しくバインドされているか、またはポートをリッ...

LinuxでIPアドレスが表示されない問題の解決方法

目次序文解決:ステップ1ステップ2序文環境: VMware Workstation 上に Linux...

MySQL アクティブ-アクティブ同期レプリケーションの 4 つのソリューションの詳細な説明

目次MySQLネイティブレプリケーションに基づくマスター-マスター同期ソリューションGaleraレプ...

ES6 クラス継承を使用してゴージャスなボール効果を実現する方法

目次導入実装手順キャンバス環境を作成するライティングボールBallクラスを継承するMoveBallク...

サーバー上で Nginx を使用して Springboot プロジェクトをデプロイする方法の詳細なチュートリアル (jar パッケージ)

1. Javaプロジェクトをjarパッケージにパッケージ化するここではMavenツールを使用します...

知っておくべきHTML最適化テクニック

Web ページのパフォーマンスを向上させるために、多くの開発者は、JavaScript、画像の最適化...