maya's blog

About programming, aws and ubuntu

twitter botを作る②

前回: twitter botを作る - maya's blog

何をするのか

docker化する。

前回の開発で、他環境で動かす場合に依存物が足りず、セットアップに時間が掛かるという問題があった。

最終的に

  1. docker pullしてイメージを準備
  2. 適切な環境変数を指定してdocker run

で動作するまでをゴールとする。

実装したcommit: 92c72b4

実装上の問題

  1. 同じDockerfileでもbuildできない場合がある

    ubuntuではbuildできてもraspiでbuildできなかった。

    今回はraspiでpip install -r requirements.txt時にopensslやlxmlのヘッダーファイルが足りなかったりで怒られた。 結局不足分をaptで入れた。

  2. 異なるアーキテクチャでビルドされたイメージは使えない

    x86_64のubuntuでビルドしたイメージをraspiでdocker runすると

    standard_init_linux.go:207: exec user process caused "exec format error"

    と怒られる。

    dockerの根本を理解していれば当たり前のことなんだろうな…

    これはどうしようもないので、結局raspiでDockerfileをビルドした。

    docker hubのauto buildでビルドされたイメージは対応するのかな…?それらしいことがissueに書いてあったような気がするけど、不確か

  3. デフォのcronだとdocker run時に指定する環境変数を読み込んでくれない

    busyboxのcronだと環境変数読み込んでくれるので、それを使う。

    ここが参考になった。

    DockerでcronしたいときはBusyBox crondが便利 - shimoju.diary

最後に

結局docker化したところでさくっと立ち上げはできなかった。 そもそもraspiで動作させようとすること自体向いていないのかもしれない。 本番・開発環境を全く同じにするのが一番いんだろうけど、何が違うとうまく行かないのかっていうのは実際に試してみないとわからない…単純に知識が足りないってのもある。