Javaアプリケーション用のDockerイメージの作成

JavaアプリケーションをDockerコンテナとして複数の方法で構築できます。ただし、このソリューションでは、gradleを使用することになります。

Dockerfileを生成するには、gradle-docker-pluginというグレード可能なプラグインを使用します。

  1. プラグインを含むようにbuild.gradleファイルを編集します。build.gradleの各ブロックで、既存のリポジトリおよびプラグインのエントリも表示されます。

    1. プラグインにプルするビルド・スクリプトの変更を追加します。
      buildscript {
              repositories {
                  maven {
                      url 'https://plugins.gradle.org/m2/'
                  }
              }
              dependencies {
                 classpath 'com.bmuschko:gradle-docker-plugin:4.3.0'
              }
          }
      
    2. jcenter rootレベルのリポジトリを追加します(プラグインの依存性はjcenterによって配布されます)。
      
      repositories {
          jcenter()
      }
    3. プラグインを適用します。
      apply plugin: 'application'
      apply plugin: 'com.bmuschko.docker-java-application'
      
      mainClassName = 'hello.Application'
    4. Jarタスクを追加します。これにより、Dockerイメージにプルするjarファイルが作成されるためです。
      
      jar {
          enabled = true
          baseName = 'gs-accessing-data-rest'
          version = '0.1.0'
      }
    5. メタデータを取得するようにグラディルプラグインを構成します。これは、openjdk:8イメージに基づいたDockerfileを生成し、コンテナにポート8080を公開して、そのイメージにomc-sample-app:0.1のタグを付けるようにプラグインに指示します。テナントおよびリポジトリ名を有効な値で置換します。存在しないリポジトリ名を使用する場合、リポジトリの作成権限があるかぎり作成されます。
      docker {
          javaApplication {
              baseImage = 'openjdk:8'
              maintainer = 'Your Name "your.email@company.com"'
              ports = [8080]
              tag = 'region-code.ocir.io/my-tenant/my-repo/omc-sample-app:latest'
          }
      }
      
  2. gradle/wrapper/gradle-wrapper.properties」を編集し、distributionUrlの値を変更してアップグレード可能バージョンを更新します。

    distributionUrl=https\://services.gradle.org/distributions/gradle-4.8-bin.zip

  3. イメージを作成します。

    ./gradlew clean jar dockerBuildImage

build.gradleに加えて、アプリケーションとDockerfileが生成され、Docker buildが実行されてコンテナのイメージが生成およびタグ付けされています。

これを検証するには、ローカル・リポジトリにDockerイメージをリストします。端末から次のものを実行します。

docker images