26
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Docker コンテナで Embulk を動かす

Last updated at Posted at 2018-09-05

Docker おじさんです。

ちょっと試しに Embulk を使おうとしたものの、手元のマシンではそのまま動かせなかった。
手元のマシンには Java 9 が入っているが、Embulk v0.9.x は Java 8 じゃないと動かせないらしい。
Java 8 入れるのもなんか嫌だったのでとりあえず Docker で動かすか、となった。

Dockerfile を書く

Dockerfile
FROM openjdk:8-jre-alpine

# Embulk 本体をインストールする
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-td

WORKDIR /work

ENTRYPOINT ["java", "-jar", "/bin/embulk"]

躓いたポイントが2点。

  • FROM openjdk:8-jre-alpine だと embulk gem install で失敗する
    • flock unsupported or native support failed to load というエラーが出る
    • libjffi を入れたら動くかと思ったけど動かなかったので、あきらめて alpine をやめることにした
    • libc6-compat を入れたら解決した1
  • ENTRYPOINT ["/bin/embulk"] だけだとコンテナが起動しない
    • exec user process caused "exec format error" というエラーが出る
    • Docker の ENTRYPOINT では、jar ファイルを直接起動することが出来ない
      • sh -c "..." するか java -jar ... する必要がある

イメージをビルドする

$ docker build -t embulk .

コンテナを起動して Embulk を使う

例えばこんな感じで。

$ docker run --rm -it -v $(pwd):/work embulk --help
$ docker run --rm -it -v $(pwd):/work embulk guess seed.yml -o load.yml
$ docker run --rm -it -v $(pwd):/work embulk run load.yml
  1. https://twitter.com/hiroysato/status/1037190771336732672

26
19
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
26
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?