HanamiのサービスをDockerで起動できるようにした

f:id:clash_m45:20200912124437p:plain
hanami + docker

Hanamiで実装中のサービスをDockerで起動できるようにしたのでログを残しておく。

Pull Request

Docker化したPull Requestはこちら

github.com

HanamiをDockerで起動する

サンプルないかなーと awesome-hanami を見てみたらちゃんとあった。

github.com

⭐️を付けて拝借する。

ちょっとした解説

dockerで起動するために追加したファイルは 3ファイル。

  1. Dockerfile
  2. docker-compose.yml
  3. Makefile

Dockerfile

サンプルではPostgreSQLを使用する構成になっているが、本プロジェクトではSqliteを使っているので書き換えた。
あとはRubyイメージのバージョンを2.6.0にしたくらいでほとんど変えてない。

dockerイメージに ruby:2.6-alpine を使っているので、bashが使えない。 ash を使う。

ポート 2300(hanamiのデフォルト)を開放している。

CMD ["bundle", "exec"] で hanami コマンドを受け付けたりできるようになってる。

docker run -p 2300:2300 api hanami server --host=0.0.0.0

docker-compose.yml

とくに変哲もないdocker-compose.yml

サンプルからPostgreSQLの記述を削除して、webサービスのdepends_onも消した。

Makefile

makeコマンドの設定ファイル。
こんなふうにランチャーとして使っているのを始めてみたので、新鮮だった。
本来こうやって使うのかもしれない。ビルドでしか使ったことなかった。

dockerizeが --build オプション がついていて毎回時間がかかるので、 up タスクを追加した。

up — Docker-docs-ja 17.06 ドキュメント

課題

make up で起動したらHanamiの標準出力がでなくなった。 また別途対処しよう。