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の違いを簡単に説明してください

推薦する

Alibaba Cloud Server で MySQL デュアルマシン ホットスタンバイを手動で実装する 2 つの方法

1. コンセプト1. ホットバックアップとバックアップの違いホット バックアップは高可用性 (HA)...

Linux nslookup コマンドの使用方法の詳細な説明

[nslookup とは?] 】 nslookup コマンドは、Linux で非常によく使用されるネ...

vuex ベースのショッピングカート機能の実装

この記事の例では、ショッピングカート機能を実装するためのvuexの具体的なコードを参考までに共有して...

ユーザーエクスペリエンスの76の経験ポイントの要約

ウェブサイト体験の分類1. 感覚体験:快適性を重視した視聴覚体験をユーザーに提供します。 2. イン...

mysql5.6 以前のデータベースで json をクエリする方法

MySQLにデータを保存するとき、乱雑であまり使用されないデータがJSONフィールドに投げ込まれるこ...

MySQL シリーズ 10 同時実行制御を実装するための MySQL トランザクション分離

目次1.同時アクセス制御2. 取引1. トランザクションは ACID 原則に従います。 2. トラン...

JS addEventListener() およびattachEvent() メソッドは登録イベントを実装します

JavaScript の DOM イベント モデルでは、オブジェクトの addEventListen...

選択にスタイルを追加するための純粋な CSS (スクリプトなし) 実装

通常は ul、li を介して選択のデフォルト スタイルを変更して、実現をシミュレートします。このよう...

データベースのデフォルトパスを変更した後にmysqlが起動できない問題の解決策

序文mysql がデフォルトのデータベース パスを変更したため、サービスを開始できませんでした。ログ...

Vue router-viewとrouter-linkの実装原理

使用 <div id="アプリ"> <router-link ...

JavaScript でプライベート メンバーを作成する

目次1. クロージャを使用する2. ES6クラスを使用する3. ES2020提案を使用する4. We...

Nginx tp3.2.3 404 問題の解決

最近、Apache を nginx に変更しました。TP プロジェクトを実行に移すと、404 エラー...

MySQL 8で追加された3つの新しいインデックスは、非表示、降順、関数です。

目次MySQL 8 の隠しインデックス、降順インデックス、関数インデックス1. 隠しインデックス1....

CSS で平均レイアウトを実現するためにネガティブ マージン テクノロジーを使用する方法

通常、IE ブラウザでの CSS の互換性の問題を解決するために、フロート レイアウトが使用されます...

js を使用して XML オンライン エディターを作成する例

目次序文オンラインXMLエディタの必要性テクノロジー事前調査ビジュアルプログラミングVSCODEプラ...