サーバーにインストールされているJavaを8から11にアップデートしたいが、
EmbulkがまだJava8までしか対応していない。
$ embulk gem list
[ERROR] embulk does not support Java11 yet.
Embulk v0.11 / v1.0 に向けて: プラグイン開発者の皆様へ
そのためEmbulkはJava8のまま使い続ける方法。
localhostのApacheのログファイルをlocalhostのMySQLにインポートする想定
Java8と11をインストール
$yum install -y java-1.8.0-openjdk
$yum install -y java-11-openjdk
# Java11に切り替える
$alternatives --config java
Java8のパスを直接指定する方法
Java8のパスを確認
$alternatives --config java
.bash_rc にエイリアスを設定する。
$vim .bashrc
alias embulk='/usr/jvm/java8のパス/java -java $HOME/.embulk/bin/embulk'
即設定を反映させる。
$source bash ~/.bashrc
動作確認
$embulk gem list
Dockerを使う方法
Docker コンテナで Embulk を動かす
を参考に設定。
Dockerfile
FROM openjdk:8-jre-alpine
RUN wget -q https://dl.embulk.org/embulk-latest.jar -O /bin/embulk \
&& chmod +x /bin/embulk
RUN apk add --no-cache libc6-compat \
&& embulk gem install embulk-output-mysql \
&& embulk gem install eembulk-parser-apache-custom-log
WORKDIR /work
ENTRYPOINT ["java", "-jar", "/bin/embulk"]
イメージをビルド
$docker build -t embulk .
embulkはDockerコンテナ内で実行するので、localhost(ホストOS)に繋ぐときは
--add-host
でlocalhostとホストOSのIPを紐づける必要がある。
Dockerコンテナ内からホストへlocalhost でアクセスしてみる
dockerコンテナの中でホストマシンのIPアドレスを取り出す
$docker run --rm --add-host=localhost: <ホストのプライベートIPアドレス> -it -v $(pwd):/work embulk run config.yml
config.ymlファイルの中のパスは、Dockerコンテナの中から見たパスになるので、絶対パスにしている場合は、Dockerコンテナ内から参照できるように書き換える必要がある。