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

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

ここでは主に、スタンドアロンのプログラムを生成できるspring-bootと、Mavenプラグインdocker-maven-pluginを使用します。

ここでの主な手順

  • シンプルなSpringbootプロジェクトを構築する
  • docker-maven-pluginを追加し、dockerfileを記述する
  • Dockerイメージの生成を練習する

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

Spring Boot 2.0を例に挙げる

pom.xml ファイルにパラメータ依存関係を追加する

 <親>
 <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() メソッドを持つコントローラーを作成します。

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

スタートアップクラス

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

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

dcoker-maven-plugin を追加

pom.xmlのプロパティノードにDockerイメージプレフィックスを追加します。

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

プラグインにdockerビルドプラグインを追加する

<ビルド>
    <プラグイン>
      <プラグイン>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </プラグイン>
      <プラグイン>
        <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.finalNmae}.jar</include>
            </リソース>
          </リソース>
        </構成>
      </プラグイン>
    </プラグイン>
  </ビルド>

Dockerfileの作成

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"]
エクスポーズ8080

この 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を指定します。
  • EXPOSEはポート8080がサービスを提供することを示します

dokekrイメージを生成する

Spring Boot プロジェクトをパッケージ化するには Docker 環境が必要です。

3つの依存関係が必要です

  • jdk環境
  • メイヴン
  • Docker環境

java -version,mvn -version,docker versionを実行したときにエラーが発生しない場合は、環境の準備が整っています。

プロジェクトディレクトリに入る

mvn パッケージ -Dmavne.test.skip=true
java -jar ターゲット/spring-boot-docker-1.0.jar

正常に実行できる場合は、jar パッケージに問題がないことを意味します。

次にイメージを構築します

mvn docker:ビルド

ビルド成功と表示されれば成功です。

ビルドされたイメージを表示するにはdockerイメージを使用します

画像を実行する

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

次に、http://127.0.0.1:8080 を curl すると、Hello Docker! が返され、成功を示します。

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

以下もご興味があるかもしれません:
  • IDEA と Dockerfile を使用して SpringBoot プロジェクトをデプロイする際の注意事項
  • Dockerfile を使用して SpringBoot プロジェクトをデプロイする方法
  • Docker を使用してプロジェクトを迅速にデプロイするための Spring Boot の手順を完了します。
  • Springboot での Dockerfile の使用

<<:  Vueカスタムディレクティブを使用してドラッグアンドドロッププラグインを構築する方法

>>:  RedisとMySQLの違いを簡単に説明してください

推薦する

HTML ヘッド構造

以下では、よく使われるヘッド構造と、各タグや要素の意味や使用シーンを紹介します(この記事は、Yisi...

フレームセットの共通プロパティ(フレームとウィンドウの分割)

フレームとは、Web ページ画面を複数のフレームに分割したもの(複数の Web ページという形で表示...

Vue の状態管理: Vuex の代わりに Pinia を使用する

目次1. ピニアとは何ですか? 2. Piniaは使いやすい3. ユーザーエクスペリエンス1. ピニ...

HTML テーブルタグチュートリアル (32): セルの水平方向の配置属性 ALIGN

水平方向では、セルの配置を左、中央、右に設定できます。基本的な構文<TD ALIGN=&quo...

CentOS IP接続ネットワーク実装プロセス図

1. システムにログインし、ディレクトリに入ります: cd /etc/sysconfig/netwo...

Docker を使用して ELK ログ システムを構築する例

以下のインストールではすべて、インストール ルート ディレクトリとして ~/ ディレクトリが使用され...

ビジュアルデザインとインタラクションデザインについて

<br />製品設計プロセス全体において、ビジュアルデザインとインタラクションデザインの...

MySQLデータベースのトランザクション分離レベルの詳細な説明

データベーストランザクション分離レベルデータベース トランザクションには、低から高まで 4 つの分離...

MySQLデータベースでの値の追加、変更、削除、クリアの例

3. MySQLデータ管理最初の方法:お勧めできません。複雑そうです -- 学生テーブルの grad...

Centos6.5 の rpm パッケージから mysql5.7 をインストールするときに発生する初期化エラーの解決策

1. rzをサーバーにアップロードして解凍する rz [root@mini2 アップロード]# ta...

Tomcat の設定と Eclipse での起動方法

目次Tomcat8のインストールと設定方法tomcat ダウンロードTomcat マネージャーを有効...

Vue Element フロントエンドアプリケーション開発 従来の Element インターフェースコンポーネント

目次1. リストインターフェースとその他のモジュールの表示処理2. 従来のインターフェースコンポーネ...

JavaScriptタイマーとボタン効果設定の詳細な説明

タイマー効果: <div> <font id='timeCount'...

Navicat がリモートで SQL Server に接続し、MySQL に変換する詳細な手順

序文最近、プロジェクトで SQL Server を使用するプログラムに遭遇しました。このデータベース...