データ分析基盤構築入門のサンプルアプリケーションを、Dockerで立ち上げる際にエラーが出て、うまく立ち上がらなかったので、色々ソリューションを試しました。
その中で、2020/3/1現在のソリューションを書きます。
エラー内容
$ docker-compose up --build
dockerでelasticsearch fluentd goアプリケーションを立ち上げると、fluentdコンテナの立ち上げでエラーが出ます。
ソリューション
1.fluentdのtd-agent-gemのバージョンをあげる。
blog-sample/Dockerfile-fluentd
の中身を以下のように変更します。
FROM debian:jessie
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get -qq update && apt-get install --no-install-recommends -y curl ca-certificates sudo build-essential libcurl4-gnutls-dev
RUN curl -L https://toolbelt.treasuredata.com/sh/install-debian-jessie-td-agent3.sh | sh
RUN /usr/sbin/td-agent-gem install fluent-plugin-elasticsearch fluent-plugin-record-reformer
EXPOSE 24224
CMD exec td-agent -c /fluentd/etc/$FLUENTD_CONF -p /fluentd/plugins $FLUENTD_OPT
具体的には、4行目でインストールしているtd-agent-gemのバージョンを2 -> 3に変更します。
参考: td-agent2からtd-agent3へバージョンアップしました - Qiita
2. 1の対応をすると、全てのコンテナが立ち上がった。localhost:80にアクセスすると、マイグレーションされていないので、エラーが出る。
no such table: articles
goアプリケーションコンテナに入ってあげてマイグレーション実行すると、さらにエラーが出ます。
$ go get github.com/rubenv/sql-migrate/...
package math/bits: unrecognized import path "math/bits" (import path does not begin with hostname)
Makefile:13: recipe for target '/go/bin/sql-migrate' failed
make: *** [/go/bin/sql-migrate] Error 1
3.goのversionをあげる
1.8 -> 1.15に
go - Cannot find package math/bits - Stack Overflow
4.マイグレーションを実行すると、マイグレーション実行される
再びgoアプリケーションコンテナに入ってあげて、マイグレーションを実行してあげると、マイグレーションが正常に実行される。
$ export GO111MODULE=on
$ go get github.com/rubenv/sql-migrate/...
/go/bin/sql-migrate up -env=development
Applied 2 migrations