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

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

Docker テクノロジの開発により、マイクロサービスの実装にさらに便利な環境が提供されます。Docker を使用して Spring Boot をデプロイするのは実はとても簡単です。この記事で簡単に学びましょう。

まず、シンプルな Spring Boot プロジェクトをビルドし、次にプロジェクトに Docker サポートを追加し、最後にプロジェクトをデプロイします。

シンプルなSpring Bootプロジェクト

pom.xmlでは、Spring Boot 2.0関連の依存関係を使用します。

<親>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-parent</artifactId>
 <バージョン>2.0.0.RELEASE</バージョン>
</親>

ウェブとテストの依存関係を追加する

<依存関係>
   <依存関係>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
  </依存関係>
 <依存関係>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-test</artifactId>
 <scope>テスト</scope>
 </依存関係>
</依存関係>

Hello Docker! を返す index() メソッドを持つ DockerController を作成します。

@レストコントローラ
パブリッククラスDockerController {
 
  @リクエストマッピング("/")
  パブリック文字列インデックス(){
    「Hello Docker!」を返します。
  }
}

スタートアップクラス

@SpringBootアプリケーション
パブリッククラスDockerApplication {
 
 パブリック静的voidメイン(String[] args) {
 SpringApplication.run(DockerApplication.class、引数);
 }
}

追加したら、プロジェクトを起動します。起動に成功したら、ブラウザで http://localhost:8080/ にアクセスします。ページに「Hello Docker!」が返され、Spring Boot プロジェクトが正常に構成されていることが示されます。

Spring Boot プロジェクトが Docker サポートを追加

pom.xml-propertiesにDockerイメージ名を追加します。

<プロパティ>
 <docker.image.prefix>スプリングブート</docker.image.prefix>
</プロパティ>

プラグインに Docker ビルド プラグインを追加します。

<ビルド>
 <プラグイン>
 <プラグイン>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
 </プラグイン>
 <!-- Docker Maven プラグイン -->
 <プラグイン>
  <groupId>com.spotify</groupId>
  <artifactId>docker-maven-plugin</artifactId>
  <バージョン>1.0.0</バージョン>
  <構成>
  <イメージ名>${docker.image.prefix}/${project.artifactId}</イメージ名>
  <dockerディレクトリ>src/main/docker</dockerディレクトリ>
  <リソース>
   <リソース>
   <ターゲットパス>/</ターゲットパス>
   <ディレクトリ>${project.build.directory}</ディレクトリ>
   <include>${project.build.finalName}.jar</include>
   </リソース>
  </リソース>
  </構成>
 </プラグイン>
 <!-- Docker Maven プラグイン -->
 </プラグイン>
</ビルド>

src/main/docker ディレクトリに Dockerfile ファイルを作成します。Dockerfile ファイルは、イメージのビルド方法を説明するために使用されます。

openjdk:8-jdk-alpine から
ボリューム /tmp
spring-boot-docker-1.0.jar app.jar を追加します。
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

この Dockerfile は非常にシンプルです。JDK の基本環境を構築し、イメージに Spring Boot Jar を追加します。以下に簡単な説明を示します。

  • FROM は、Jdk8 環境をベースイメージとして使用することを意味します。イメージがローカルにない場合は、DockerHub からダウンロードされます。
  • VOLUME、VOLUME は /tmp ディレクトリを指します。Spring Boot は組み込みの Tomcat コンテナを使用するため、Tomcat はデフォルトで /tmp を作業ディレクトリとして使用します。このコマンドの効果は、ホストの/var/lib/dockerディレクトリに一時ファイルを作成し、コンテナの/tmpディレクトリにリンクすることです。
  • 追加、ファイルをコピーして名前を変更する
  • ENTRYPOINT、Tomcatの起動時間を短縮するには、java.security.egdシステムプロパティを追加して、ENTRYPOINTとして/dev/urandomを指定します。

これで、Spring Boot プロジェクトへの Docker 依存関係の追加が完了します。

パッケージ環境を構築する

Spring Boot プロジェクトをパッケージ化するには Docker 環境が必要です。Windows 上で Docker 環境を構築するのは面倒なので、Centos 7 を例に説明します。

Docker環境をインストールする

インストール

yumでdockerをインストール

インストールが完了したら、次のコマンドを使用して Docker サービスを起動し、起動時に開始するように設定します。

サービスdocker開始
chkconfig docker オン
 
#LCTT 注釈: ここでは古い sysv 構文が使用されています。たとえば、CentOS 7 でサポートされている新しい systemd 構文は次のとおりです。
systemctl で docker.service を起動します。
systemctl で docker.service を有効にする

Docker China Acceleratorの使用

:vi /etc/docker/daemon.json を編集します。
 
#追加後:
{
  "レジストリミラー": ["https://registry.docker-cn.com"],
  「ライブリストア」:true
}

dockerを再起動する

systemctl dockerを再起動します

docker のバージョンを入力します。バージョン情報が返されれば、インストールは成功です。

JDKをインストールする

yum -y java-1.8.0-openjdk* をインストールします

環境変数を設定する vim /etc/profileを開き、次の内容を追加します

JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64 をエクスポートします。
エクスポート PATH=$PATH:$JAVA_HOME/bin

変更が完了したら、有効にします

ソース /etc/profile

java -version と入力したときにバージョン情報が返された場合、インストールは成功しています。

MAVENのインストール

ダウンロード: http://mirrors.shu.edu.cn/apache/maven/maven-3/3.5.2/binaries/apache-maven-3.5.2-bin.tar.gz

## tar vxf apache-maven-3.5.2-bin.tar.gz を解凍します
## mv apache-maven-3.5.2 /usr/local/maven3 を移動します

環境変数を変更し、/etc/profileに次の行を追加します。

MAVEN_HOME = /usr/local/maven3
MAVEN_HOMEをエクスポートする
PATH=${PATH}:${MAVEN_HOME}/bin をエクスポートします。

環境変数を有効にするには、必ず source /etc/profile を実行してください。

mvn -version と入力し、バージョン情報が返された場合はインストールは成功しています。

これでビルド環境全体の構成が完了します。

Dockerを使用してSpring Bootプロジェクトをデプロイする

spring-boot-docker プロジェクトをサーバーにコピーし、パッケージ化とテストのためのプロジェクト パスを入力します。

#パッケージ化 mvn パッケージ
#java -jar target/spring-boot-docker-1.0.jar を起動します

Spring Bootの起動ログを見ると、環境設定に問題がないことがわかります。次に、DockerFileを使用してイメージをビルドします。

mvn パッケージ docker:build

最初のビルドは少し遅くなる場合がありますが、次のメッセージが表示されたらビルドは成功です。

...
ステップ 1: openjdk:8-jdk-alpine から
 ---> 224765a6bdbe
ステップ2: ボリューム/tmp
 ---> キャッシュの使用
 ---> b4e86cc8654e
ステップ3: spring-boot-docker-1.0.jar app.jarを追加する
 ---> a20fe75963ab
中間コンテナ593ee5e1ea51の削除
ステップ 4: ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -jar /app.jar
 ---> 85d558a10cd4 で実行中
 ---> 7102f08b5e95
中間コンテナ 85d558a10cd4 を削除しています
7102f08b5e95 の構築に成功しました
[INFO] springboot/spring-boot-docker をビルドしました
[情報]  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
[情報] ビルド成功
[情報]  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
[情報] 合計時間: 54.346 秒
[情報] 終了日時: 2018-03-13T16:20:15+08:00
[情報] 最終メモリ: 42M/182M
[情報]  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 

ビルドされたイメージを表示するには、docker images コマンドを使用します。

Docker イメージ
リポジトリ タグ イメージ ID 作成 サイズ
springboot/spring-boot-docker 最新 99ce9468da74 6 秒前 117.5 MB

springboot/spring-boot-docker は私たちが構築したイメージです。次のステップはイメージを実行することです。

docker run -p 8080:8080 -t springboot/spring-boot-docker

起動が完了したら、docker ps を使用して実行中のイメージを表示します。

ドッカーps
コンテナID イメージ コマンド 作成ステータス ポート名
049570da86a9 springboot/spring-boot-docker "java -Djava.security" 30 秒前 27 秒前に起動 0.0.0.0:8080->8080/tcp determination_mahavira

構築したコンテナが動作しているのがわかります。ブラウザでhttp://192.168.0.x:8080/にアクセスし、

こんにちは、Docker!

これは、Spring Boot プロジェクトが Docker を使用して正常にデプロイされたことを示しています。

サンプルコード: https://github.com/ityouknow/spring-boot-examples

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

以下もご興味があるかもしれません:
  • Dockerfile を使用して SpringBoot プロジェクトをデプロイする方法
  • Docker を使用して Spring Boot アプリケーションをデプロイする例
  • Docker を使用して Spring Boot Maven アプリケーションをデプロイする方法
  • アイデアに基づいてSpringbootプロジェクトをDockerにデプロイする
  • Mac 上の Docker に springBoot プロジェクトをデプロイする (デモ)
  • Spring Boot と Docker を使用してマイクロサービスをデプロイする方法
  • Dockerを使用してSpring Bootプロジェクトをデプロイする手順

<<:  vueプロジェクトのマルチ環境設定(.env)の実装

>>:  ElementUIはel-formフォームリセット機能ボタンを実装します

推薦する

Docker で既存のイメージに基づいて新しいイメージを構築する方法

既存のイメージから新しいイメージを構築することは、Dockerfile ドキュメントを通じて行われま...

MySQLは実際に分散ロックを実装できる

序文前回の記事では、eコマース シナリオでのフラッシュ セールの例を通じて、モノリシック アーキテク...

MySQL Server 8.0.3 のインストールと設定方法のグラフィックチュートリアル

この文書はMySQL Server 8.0.3のインストールと設定方法を参考のために記録したものです...

PID を作成できないために MySQL が起動できない問題を解決する方法

問題の説明MySQL 起動エラー メッセージは次のとおりです。 mysqld を起動します (sys...

Windows に MySQL をインストールする方法のグラフィック チュートリアル

概要: この記事では主に、Windows 環境に MySQL をインストールする方法について説明しま...

Docker での Redis の永続ストレージの詳細な説明

この章では、dockerの下にあるSpring BootプロジェクトでRedisを操作し始めます。準...

ウェブデザインにおけるテキスト入力ボックスのパラメータの説明

一般的なゲストブック、フォーラムなどでは、テキスト入力ボックスが使われています。これは HTML 言...

vue3 コンポーネント通信方法の概要と例

vue3コンポーネントの通信モードは次のとおりです。小道具$放出$expose / 参照$属性vモデ...

Vueプロジェクトをパッケージ化してリリースする手順

目次1. 開発環境から本番環境への移行2. 統一されたリクエストパスを設定する3. パッケージ化コマ...

nginx を使用したプロキシ サーバーの設定

Nginx は、リバース プロキシ機能を使用して負荷分散を実装できるほか、フォワード プロキシ機能を...

Linux ネットワークプログラミング機能の簡単な分析

目次1.ソケットを作成する2. ソケットをバインドする3. 聞き手を作る。聞く4. 接続が受け入れら...

異なるページ間のJavaScriptデータ転送(URLパラメータ取得)

Web ページでは、あるページに情報を入力すると、別のページにジャンプし、入力した情報が別のページ...

CSS を使用して画像の色を変更する 100 の方法 (収集する価値あり)

序文「画像処理というと、PhotoShop などの画像処理ツールを思い浮かべることが多いです。フロン...

MySQL の従来のソート、カスタム ソート、中国語のピンイン文字によるソート

MySQL の通常のソート、カスタム ソート、中国語のピンイン文字によるソート。実際の SQL を記...

MySQL 8.0の新機能、隠しフィールドの詳細な説明

序文MySQL バージョン 8.0.23 では、新しい機能「Invisible Column (In...