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 を決めればビルドが開始され、デプロイされます。