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

推薦する

Mysql の遅いクエリ操作の概要

MySQL の遅いクエリの説明MySQL スロー クエリ ログは、MySQL が提供するログ レコー...

Linuxシステムにおけるプロセス管理の詳細な説明

目次1. プロセスとスレッドの概念2. プロセス管理とは何ですか? 3. プロセス管理の役割4. L...

HTMLタグのデフォルトスタイルの配置

html、address、blockquote、body、dd、div、dl、dt、fieldset...

VMware 仮想マシンの NAT モードを構成する方法

この記事では、VMware仮想マシンのNAT構成プロセスを詳しく説明します。具体的な内容は次のとおり...

Hyper-V なしで Windows 10 を動作させるソリューション

Windows10 Home Edition でHyper-vを有効にする方法をまだ探していますか?...

HTML ハイパーリンクの詳細な説明

ハイパーリンクハイパーリンクは、Web サイト上のすべてのページがハイパーリンクで接続され、ページ間...

JavaScript の継承についてどれくらい知っていますか?

目次序文コンストラクタ、プロトタイプオブジェクト、インスタンスオブジェクトの関係プロトタイプチェーン...

Mysql は null 値の first/last メソッドの例を実装します

序文MySQL が SQL SELECT コマンドと WHERE 句を使用してテーブルからデータを読...

JS を使用してクリップボード内の Excel コンテンツを解析する方法

目次序文1. イベントとクリップボードを貼り付ける2. クリップボード内のコンテンツ形式3. HTM...

MySQLクエリ時にフィールドにデフォルト値を割り当てる方法

必要フィールドをクエリする場合、フィールドに同じ値を指定する必要があります。この値はハードコードする...

CSS の記述基準と順序を共有する [すべての人に使用を推奨]

CSSの記述順序1. 位置属性(位置、上、右、z-index、表示、フロートなど) 2. サイズ(...

Vue が Ref を使用してレベル間でコンポーネントを取得する手順

VueはRefを使用してレベル間でコンポーネントインスタンスを取得します例の紹介開発プロセスでは、レ...

js を使ってシンプルな虫眼鏡効果を実現

この記事の例では、参考までに簡単な虫眼鏡効果を実現するためのjsの具体的なコードを共有しています。具...

Docker インストール rocketMQ チュートリアル (最も詳細)

RocketMQ は、Alibaba が設計した分散型のキューベースのメッセージング ミドルウェア...

Docker で MySQL 接続と設定ファイルの最大数を変更する

1. MySQLイメージを見つける ドッカーps 2. ミラーmysqlイメージを入力する dock...