ソフトウェアエンジニアの日常の雑記

日々思ったことをまとめます

Javaアプリをdocker化してくれるjibを環境ごとに分岐する

本家はこちら

Java(Spring)アプリをdocker化してくれるんだけど、環境ごとに分けたいことはあるので、パラメータを切り替えられるようにする。

buildscript {
    ext {
        springBootVersion = '2.0.3.RELEASE'
                jibVersion = "0.9.8"
    }
    repositories {
        mavenCentral()
        maven {
            url "https://plugins.gradle.org/m2/"
        }
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
        classpath "gradle.plugin.com.google.cloud.tools:jib-gradle-plugin:${jibVersion}"
    }
}

apply plugin: 'org.springframework.boot'
apply plugin: 'com.google.cloud.tools.jib'
    dependencies {
        compile('org.springframework.boot:spring-boot-starter-webflux')
        compile('org.springframework.boot:spring-boot-starter-thymeleaf')
        compile project(":service")
    }

/**
* jibの設定 ifで分岐する
*/
jib {
    if(project.build == 'product') {
        jib {
            from {
                image = 'adoptopenjdk/openjdk8:alpine'
            }
            to {
                image = 'sample/jib-demo-product-app'
            }
            container {
                jvmFlags = ['-Xms512m', '-Xdebug']
                mainClass = 'com.example.demo.DemoApplication'
                args = []
                ports = ['8080/tcp']
            }

        }
    } else {
        jib {
            from {
                image = 'adoptopenjdk/openjdk8:alpine'
            }
            to {
                image = 'sample/jib-demo-app'
            }
            container {
                jvmFlags = ['-Xms512m', '-Xdebug']
                mainClass = 'com.example.demo.DemoApplication'
                args = []
                ports = ['8080/tcp']
            }

        }
    }

上記のように設定し、gradleコマンドをキックするときに、引数を渡してあげればいい

$ ./gradlew -Pbuild=product


REPOSITORY TAG IMAGE ID CREATED SIZE sample/jib-demo-product-app latest 4fe1925bb902