Heroku、簡単すぎ。AWSの良いところだけを切り取って使えるようなDevOps、とてもよい。小規模なWebアプリが多い弊社において、Herokuの存在はとてもありがたいものであります。
HerokuのWebサーバに自社のDockerイメージをビルドしてデプロイする手順も極めて簡単です。フリープランのDynoでも検証できます。必要なのは、Heroku.ymlという設定ファイルとDockerFileだけです。
Herokuでアプリを作ってある前提で話を勧めます。
heroku.yml
の作成
HerokuはこのファイルがコミットされてPUSHされると、イメージのビルドを開始します。Heroku側で。
build:
docker:
web: Dockerfile.web
run:
web: gunicorn -w2 -b 0.0.0.0:$PORT -t 60 run:app
webというのは、Dynoのwebのこと。要はWebサーバのインスタンスだと思えば良い。DockerFile.webはローカルにあるDockerイメージをビルドするためのファイル。これもコミットしないとダメだよw
run以下は、DockerのRUNコマンドと同じ。弊社はgunicorn
で動かすのでこういう設定になっている。
気をつけるのは環境変数の「$PORT」です。これをDockerFileのENV(ARGでもよいのかな)にセットしておく必要がある。Herokuの制約で、dynoのポートは起動時に動的に決まる。gunicornのようにWebからのアクセスをAppサーバにプロキシしてもらう場合は、このようにする。多分、php-fpmでも同じだと思う。
設定は、以上・・・!あとは、 git push heroku master
を決めればビルドが開始され、デプロイされます。