Launcherの話を書いたけど。JARと比べて何が嬉しいのかな?って考えてDockerのレイヤーにライブラリーを閉じ込めてしまえば、依存関係が変わらない限り再利用できるなぁ、って思った。それはまた次の機会に書こうと思う。いうことで、とりあえず閉じ込めてみた話。これが役に立つかどうかは正直知らん。コードはこれhttps://github.com/bufferings/spring-boot-thin-sandboxのdemo-thin-dockerディレクトリ。.ビルド中に依存ライブラリーのダウンロードをするので、しばらく時間がかかる。5.804)...という感じ。依存ライブラリーは既にダウンロード済みなので、普通の速さで起動する。一度ビルドすると、依存ライブラリーを変更しないかぎり次からはそのレイヤーが再利用されるからビルドに時間はかからない。Launcherのオプションについて触れておく。ここに書いてるhttps://github.com/dsyer/spring-boot-thin-launcher#command-line-options色々あって面白いんだけど、その中で今回使ってるやつをピックアップthin.dryrunアプリケーションを起動せずに、依存関係のダウンロードだけをする。thin.offlineオフラインモードになる。ローカルのリポジトリーにあるやつだけを使う。ローカルになければ例外になる。thin.archive普通に起動すると、その起動したJARを実行しようとするんだけど、それとは別のJARを対象にしたい場合に使う。これを使った理由は後で説明する。thin.debugデバッグ情報がでる。thin.traceめっちゃ色々でる。あ、これは確認するときに使ったってだけで、今日紹介する手順の中では使ってなかった。Dockerfileはこうなってる。マルチステージビルドを使ってる。["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]いっこずつ説明していく。openjdk:11-jdk-slim特に理由はないけど11を使ってみた。/thin/wrapper.jar対象のJARがまだない状態で、pom.xmlを元に依存ライブラリーだけダウンロードしてきたいなーと思ったので、その機能(ThinJarWrapper)を持ってるwrapper.jarをダウンロードしておいた。pom.xmlプロジェクトルートからpom.xmlをコピーしてJARに固める。wrapper.jarでpom.xmlを直接読めたらいいなーって思ったんだけど、ソースを見てみたら、どうもJARじゃないとだめみたいなので、pom.xmlだけを持ったpom.jarを作ることにした。--thin.debug=truedry-runモードでwrapper.jarを実行する。対象はwrapper.jarじゃなくてpom.jarの中のpom.xmlにしたいので、thin.archiveで指定。thin.rootオプションを指定していないので、デフォルトの.m2ディレクトリに依存ライブラリーがダウンロードされる。/root/.m2依存ライブラリーのダウンロードが終わったら、その.m2ディレクトリーだけがあればいい。wrapper.jarやpom.jarは要らないので、別のイメージをFROMにして.m2だけを持ってくる。["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]で、あとはいつも通りアプリのJARをコピーしてきて、エントリーポイントを書いておく。thin.offline=true実際にはここで何度かエラーが出て、試行錯誤したのであった(thin.propertiesを使う方法があって、最初はそっちでやってたんだけど、それだとランチャーがダウンロードされてなくて、ここで「ランチャーがないから無理!」って怒られたのであった。ごにょっとしたらいけたんだけど、それより素直にpomを使うことにした。Launcherは使うつもりはないけど、何かで「依存ライブラリーを切り離したいな」って思ったときには、この記事を読みなおしてやってみるかもなぁというくらい。Platformの...2018-10-02種明かし編:SpringBootのJarのサイズをめっちゃ小さくする!昨日書いたやつの種明かし編。コー...2018-10-01SpringBootのJarのサイズをめっちゃ小さくする!SpringBootのJarのサイズを小さくするといえば、ぼぼさんのこれ...2017-06-06KafkaのクライアントをJavaで試しに書いてみた。それとspring-kafka。いつもありがとうございます。(1)はてなブログをはじめよう!bufferingsさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。