LoginSignup
1
1

More than 1 year has passed since last update.

EmbulkをJava8のまま使用し続ける

Posted at

サーバーにインストールされている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

【Java】複数バージョンの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コンテナ内から参照できるように書き換える必要がある。

Dockerコンテナにホストマシンのディレクトリをマウントする/マウントされたパスを確認する

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1