heroku-examples/python-miniconda を参考に、PyCallとSinatraをHerokuで動かしてみました。

ソースはこちらです。
https://github.com/tnantoka/pycall-heroku

Docker関連

# 最初とpush前の確認時にやる
$ docker build -t tnantoka/pycall-heroku .

# アプリ開発中
$ docker run -it --rm -v `pwd`/app:/opt/app -p 5000:5000 -e PORT=5000 tnantoka/pycall-heroku

# 確認
$ docker run -it --rm -p 5000:5000 -e PORT=5000 tnantoka/pycall-heroku
  • VOLUMEはサポートされないのでADDで。
  • 最後はbuildしてpushするが、開発中は-vで上書き。
  • Herokuでは$PORTが使われるので-eで渡す。

他のプロジェクトでも使いたかったので、heroku-minicondaにRubyをインストールしたものを公開した。
https://hub.docker.com/r/tnantoka/miniconda-ruby/
DockerHubデビュー!

Herokuにデプロイ

$ heroku plugins:install heroku-container-registry
$ heroku container:login
$ heroku create pycall-heroku
$ heroku container:push web
$ heroku open

この状態だと何故かApplication Errorになってしまったのですが、ブラウザでHerokuにログインしてDynoを手動でONにすればいけました。謎です。
(heroku createの後、pushする前に1度アクセスしておいた方がいい?)

https://pycall-heroku.herokuapp.com/
こちらで無事動いております。

その他

pyimportas指定だとエラーになった。
僕のSinatra力が足りなそう。

参考