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/
こちらで無事動いております。
その他
pyimport
でas
指定だとエラーになった。
僕のSinatra力が足りなそう。