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 の一時テーブルと派生テーブルについての簡単な説明

派生テーブルについてメイン クエリに派生テーブルが含まれている場合、または SELECT ステートメ...

Linux でハイパースレッディング技術を動的に有効/無効にする方法の詳細な説明

序文Intel のハイパースレッディング テクノロジーにより、1 つの物理コア上で 2 つのスレッド...

MySQL 8.0.12 解凍バージョンのインストールチュートリアル

この記事では、MySQL 8.0.12解凍版のインストールチュートリアルを参考までに紹介します。具体...

HTML内のフレームセットタグが正常に表示されない原因の解析と解決方法

<frameset></frameset>は皆さんもよくご存知のものです。こ...

CSSを使用してTDのINPUTの幅を設定する

最近、C# を使用して Web プログラムを作成していたときに、次のような問題が発生しました。 Te...

MySQLでレコードを変更する場合、更新操作フィールド = フィールド + 文字列

シナリオによっては、varchar 型のフィールドを変更する必要があり、変更の結果は 2 つのフィー...

MYSQL(電話番号、IDカード)データ非感応化の実装

1. データ感度低下の説明日常の開発ニーズでは、データの感度低下が頻繁に発生します。たとえば、ID ...

子ども向けウェブサイトの視覚構造レイアウト設計手法の分析

1. 温かくて優しい関連アドレス: http://www.web-designers.cn/post...

サーバーストレステストの概念と方法 (TPS/同時実行性)

目次1 ストレステストの指標1.1 秒あたり1.2 クォータ1.3 平均処理時間(RT) 1.4 同...

CSSのline-heightを継承する方法

Line-height はどのように継承されますか?30px などの特定の値を書き込むと、この値が継...

IEのクラッシュバグ

コードをコピーコードは次のとおりです。 <スタイル タイプ="text/css&qu...

nginx.conf のルートディレクトリ設定の詳細な説明

nginx.conf を構成するときには常に何らかの問題が発生します。ここでは、よくある問題とその解...

RHEL7.5 mysql 8.0.11 インストールチュートリアル

この記事はRHEL7.5でのMySQL 8.0.11のインストールチュートリアルを記録しています。具...

Dockerでnginxをデプロイし、設定ファイルを変更する方法

Dockerでnginxをデプロイするのはとても簡単ですたった 1 行のコマンド: docker 実...

JavaScript の新しい要素トラバーサルプロパティを使用して子要素をトラバースする方法を学びます

目次1. ChildNodes属性のトラバーサル2. 要素シリーズ属性のトラバーサル以前は、chil...