2017-03-16 Heroku で Docker を使ってみた
Heroku で Docker を使ってみた。
Heroku は beta ではあるが Docker サポートをしている。詳細は公式のドキュメントを参照してほしい。 Container Registry and Runtime | Heroku Dev Center
特に迷うこともなく利用できた。 git push
でアプリケーションが動くイメージから docker push
でアプリケーションが動くイメージに変わる感じ。 pull
してくれるともっと良い気もするけど、十分に良い。 Travis CI からの Heroku (Docker) へのデプロイも問題なく動いている。
いままでは bouzuya/mr-jums を直接 Node.js アプリケーションとして動かしていたのだけど、これからは Docker イメージ経由で Node.js アプリケーションとして動かすつもりだ。理由は次のツイートからの一連のツイートを見てほしい。
heroku 。「 `git push` で動く」から「 `docker push` で動く」に切り替えていきたい。
— bouzuya (@bouzuya) March 14, 2017
箇条書きすると次のような要求がある。
- client-side のための js を Travis CI でビルドしたい。
- client-side のための js を Amazon S3 にデプロイし、 CloudFront 経由で配信したい。
- 最新のビルドだけでなく、過去のビルドも残したい。
- client-side のための js は hash をつけたい (例:
bundle-50fa479d58.js
) 。 - server-side のための js は client-side のための js を HTML に埋め込んで返したい (例:
<script src="https://s3.amazonaws.com/bucket1/bundle-50fa479d58.js"></script>
) 。 - server-side のための js は Travis CI でビルドした際の hash を知りたい。
- Docker image に埋め込もう。
mr-jums は最終的には静的ファイルを出力できるようにするつもりではあるのだけど、ほかにも業務の事情から検証しておきたい構成があって、 Docker + Amazon S3 + CloudFront を試したい。
上記の検証の第一歩として Heroku で Docker を試してみた。