メリットの多いDocker
コンテナ化技術の一つであるDockerですが、使ってみると数多くのメリットがあります。
実際のメリットについてはネットで検索すると色々出てくるので、この記事ではDockerそのものに関する解説はいたしません。
ただ個人的に強調しておきたいのは、本番環境などへ直接Javaのモジュールやアーカイブなどを配置するようなデプロイしている場合、Dockerイメージをリポジトリにpushするという作業に変えることでたくさんの恩恵を得ることができると思います。
Dockerの面倒さ
メリットの多いDockerですが面倒な面もあります。
Dockerfileを書かないといけない。書くためのコマンドやベストプラクティスも学習するとなるとそれなりに面倒です。
ローカル開発環境がWindowsの場合にDocker環境を構築するのも面倒です。
jibが解決
もしDockerコンテナ上で動くアプリケーションがJavaで開発されている場合、Googleが提供しているjibを利用することでDockerにまつわるいくつかの面倒さから解放されます。
jibを利用するにあたって必要なのは(gradleを使っている場合) build.gradle
に
plugins {
id 'com.google.cloud.tools.jib' version '2.1.0'
}
という設定だけです。
そして仮に docker-image-to-push/1.0.0
というイメージ名でpushしたい場合は
jib.to.image = 'docker-image-to-push/1.0.0'
と build.gradle
に記述するだけです。
これで gradle jib
と実行すればDockerイメージが作成されpushされます。
驚くべきはたったこれだけの設定でいいことと、ローカルにDocker環境が必要でないことです。
もしDocker Hubにアカウントを持っているなら
jib.to {
auth {
username 'account'
password 'pass'
}
image 'account/repository:1.0.0'
}
のように build.gradle
に設定することですぐにjibを試すことができます。
(account, pass, repositoryの部分は環境に合わせて変更してください)
上記の例でわかるようにほとんど設定のいらないjibですが、色々設定することも可能です。
まず設定しておいてほしいのは(JavaのソースファイルのエンコーディングがUTF-8の場合)
jib.container.environment = [JAVA_TOOL_OPTIONS: '-Dfile.encoding=UTF-8']
という設定です。
これがないとソースファイル中に日本語がある場合にエラーになってしまいます。
設定できる内容については [configuration] (https://github.com/GoogleContainerTools/jib/tree/master/jib-gradle-plugin#extended-usage)から確認できます。
以上、jibの紹介でした。