Docker を使用して Spring Boot をデプロイする方法

Docker を使用して Spring Boot をデプロイする方法

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 を使用して正常にデプロイされたことを示しています。

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

以下もご興味があるかもしれません:
  • Idea による Springboot の Docker への Java リモート ワンクリック デプロイ
  • Dockerfile を使用して SpringBoot プロジェクトをデプロイする方法
  • Docker で Spring Boot プロジェクトをデプロイするプロセスの詳細な説明
  • Docker を使用してプロジェクトを迅速にデプロイするための Spring Boot の手順を完了します。
  • Spring Boot と Docker を使用してマイクロサービスをデプロイする方法
  • Docker を使用して Spring Boot アプリケーションをデプロイする例
  • アイデアに基づいてSpringbootプロジェクトをDockerにデプロイする

<<:  MySQL 8.0.12 のインストールと使用方法のチュートリアル

>>:  js を使用して画像をモザイク化する方法の例

推薦する

Linux に mysql をインストールするときに /etc に my.cnf ファイルがない問題を解決する

今日、mysql ポートを変更したいと思ったのですが、/etc/ ディレクトリに my.cnf ファ...

テーブルの作成、フィールドの追加、フィールドの変更、インデックスの追加によく使用される MySQL の SQL 文の概要

この記事では、テーブルの作成、フィールドの追加、フィールドの変更、インデックスの追加を行う一般的な ...

HTML と JavaScript を使用してローカル メディア (ビデオとオーディオ) ファイルを再生する方法

まず、セキュリティ上の理由から、JavaScript はローカル リソース ファイルに直接アクセスで...

MySQL データ型の最適化の原則

MySQL は多くのデータ型をサポートしており、高パフォーマンスを得るには適切なデータ型を選択するこ...

Angularコンポーネントライフサイクルの詳細説明(I)

目次概要1. フックの呼び出し順序2. onChangesフック3. 変更検出メカニズムとDoChe...

MySQLパスワードを変更するいくつかの方法

序文:データベースを日常的に使用すると、パスワードが単純すぎて変更する必要がある場合、パスワードの有...

フローティングをクリアするいくつかの方法(推奨)

1. 同じタイプの空の要素を追加し、要素の CSS 属性 clear:both; を設定します。 ...

MySQL 8.0.15 winx64 のインストールと設定方法のグラフィックチュートリアル (Windows の場合)

この記事では、MySQL 8.0.15 winx64のインストールと設定方法を参考までに紹介します。...

Windows に WSL をインストールして構成する方法

WSLとはBaidu 百科事典からの一節を引用します。 Windows Subsystem for ...

MySQLカバーインデックスの詳しい説明

コンセプトインデックスにクエリ要件を満たすすべてのデータが含まれている場合、それはカバーリング イン...

ubuntu20.04 上の CLion2020.1.3 での ROS のインストールと設定の詳細な説明

1. CLionをダウンロード、インストール、アクティベートするオンラインで提供されるチュートリアル...

Nginx タイムアウト設定の詳細な説明

最近、プロジェクトで nginx を使用し、バックエンドで Java を使用しました。バックエンドで...

CSS でレスポンシブ レイアウトを実装する方法

CSS でレスポンシブ レイアウトを実装するレスポンシブレイアウトは非常にハイエンドで難しいように思...

コンテンツタイプの説明、つまりHTTPリクエストヘッダーのタイプ

コンテンツ タイプについて学ぶには、まずそれが何であるか、そして何に使用されるかを知る必要があります...

Docker+keepalived+nginx を使用してマスタースレーブホットスタンバイを実装する方法の例

序文単一障害点を解決するには、マスター/スレーブ ホット スタンバイ ソリューションを構成する必要が...