経産省の住所変換コンポーネントをherokuにデプロイする
経産省が公開している住所変換コンポーネントは以下の通りDockerizeされているが、Herokuにデプロイしようとしたところハマったので手順をメモしておく。
さっそく社員が Dockerize してました。これがオープンであるということ。経産省さんgjです!GitHub での公開も検討中とのこと。皆さん応援しましょう!https://t.co/89v6hofnhY#IMIコンポーネントツール https://t.co/7eNrOqSU3m
— Hal Seki (@hal_sk) May 30, 2020
Dockerfileの準備
コンテナイメージを作成するDockerfileは以下から取得する。
Container Registry & Runtime (Docker Deploys) | Heroku Dev Centerに
The web process must listen for HTTP traffic on $PORT, which is set by Heroku. EXPOSE in Dockerfile is not respected, but can be used for local testing. Only HTTP requests are supported.
とあるのでポートを8080
から$PORT
に変更する。
IMI 住所変換コンポーネント Herokuデプロイ用Dockerfile
Herokuにデプロイ
ほぼContainer Registry & Runtime (Docker Deploys) | Heroku Dev Centerに記載されている通り。
1. コンテナレジストリにログイン
$ heroku container:login
2. 作成したDockerfileのあるディレクトリに移動しアプリ作成
$ heroku create Creating app... done, ⬢ <アプリ名>
3. gitリポジトリの紐付け
次の手順でコンテナレジストリにpushする際にError: Missing required flag
というエラーが出るのでHerokuとgitリポジトリを紐づけておく。
参考:[Herokuエラー]Error: Missing required flagが出た - Qiita
$ heroku git:remote -a <2で作成されたアプリ名>
4. コンテナイメージをビルドしコンテナレジストリにpush
heroku container:push
の引数にはprocess-type
(今回はwebアプリのためweb
)を指定する。コンテナ名を指定して動作せず小一時間悩んだ・・・
参考:Rails on DockerをHerokuでDeployするまで - Qiita
$ heroku container:push web
5. 2で作成したherokuアプリにビルドしたイメージをリリース
$ heroku container:release web
6. ブラウザで開いて確認
$ heroku open
非ITエンジニアにとってIMI住所変換コンポーネントの使用はハードル高いけど、Herokuにデプロイすることでチームで使えるようになるので参考になれば幸い。