ついにherokuからFreeプランに変更するか18時間運用にするか、$7払うかというメールが来ました。
お遊びで使っているBOTなこともあり、Process Scheduler
を使うことで簡単に2つのBOTを切り替えられそうだったので、2つのアプリで1つのBOTを運用することにしました。
githubのレポジトリ作成
github connectを使って自動デプロイをするので、まずBOT用のgithubレポジトリを作成し、git pushしておいてください。
herokuに2つのアプリを作成
次にheroku上に新しく2つのBOTを作成します。
なおbot1やbot2の場所はアプリ名です。
ここでは、説明のためbo1、bot2と表記します。
$ heroku create bot1
$ heroku create bot2
herokuのフリープランではwebとworkerの2つのdynoが使えます。
どちらでもかまわないと思いますが、今回はworkerを使うので、自分の環境に合わせてProcfileを変更してください。
worker: npm start
その後herokuのページを開き、環境変数の設定を行います。
github connectを使って自動デプロイ
変更するごとに、herokuに2回pushするのは面倒だったのでgit push herooku master
によるデプロイはせずにgithubからの自動デプロイで対処することにします。
herokuのDeployタブを開きApp connected to GitHub
から先ほど作成したレポジトリを指定しましょう。これで、githubにpushするごとにherokuに自動にデプロイされます。簡単ですね。
さて、すでにgithubの方にはpushしてしまったので、画面の一番下にManual deploy
の項目があるので、はじめはここからデプロイしてみます。
Deploy Branch
をクリックしてデプロイを実行します。
この作業をもう一つのアプリでも同様に行います。
Process Schedulerを使って指定の時間眠らせる
このままだと同じBOTが並行して動いているだけなので、Process Scheduler
を利用して指定の時間眠らせます。
Resources
タブのAdd-onsフォームからProcess Schedulerを探して、process Schedulerを設定します。
今回はworkerで動かしているのでwebの方は全て0
のままで、workerタブの方を設定してみます。
process Schedulerの設定は、2つのアプリの時間が被らないように注意しましょう。
この作業ももう一つのアプリでも同様に行います。
注意
混乱するので、タイムゾーンの設定をアプリとProcess Schedulerで合わせた方がいいでしょう。
完成
以上で2つのアプリが交代で1つのbotとして稼働するようになったと思います。
お疲れ様でした。