digdag 環境を docker で 構築したときにハマった問題

メモ程度に。

現象

脳死して centos 上の java8 環境を作るときに webdizz/centos-java8 既存イメージを利用した際にコケた。こういうのサボらないほうがいいね。理解していないものを使っちゃだめだなーと。 以下は詳細なJavaのバージョン

# java -version
java version "1.8.0_11"
Java(TM) SE Runtime Environment (build 1.8.0_11-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.11-b03, mixed mode)

digdag push とかするときにタイムスタンプ付きのログが出るんだが、そのときに Javaの 時間関係のライブラリのAPIがうまく動かないことが原因だったぽい。

Unable to obtain Instant なんちゃら、、、っていうエラーが発生していた。

解決法

ちなみに以下のバージョンでは問題なく動いた。

# java -version
openjdk version "1.8.0_171"
OpenJDK Runtime Environment (build 1.8.0_171-b10)
OpenJDK 64-Bit Server VM (build 25.171-b10, mixed mode)

Dockerfile での install は 以下のような感じ

FROM centos:latest

RUN \
    yum update -y && yum install -y \
      java-1.8.9-openjdk \
      java-1.8.0-openjdk-devel

Java には問題がなくて、 JAVA_HOME の設定が間違っているのかと思って再度設定し直して試してみたが結局再現したのでやっぱりjavaのばーじょんがよくなかったぽい。

他の解決策もあるかもなので こうだよってのあったら教えてほしいです。

追記

(Qiitaの方で)コメント欄で教えていただいた公式ドキュメントの記述によると、digdagの実行にはJava8 u72以降が必要とのこと。

問題が発生していたときの Java の バージョンは 調べるとたしかに u72 よりも古いものでした。

http://docs.digdag.io/getting_started.html#got-error